객체지향의 주요 개념과 특징

Posted by yunki kim on May 10, 2021

객체

  -식별자 존재: 객체를 유일하게 구별

  -상태 존재: 자료구조에 해당

  -메서드 존재: 연산을 수행할 수 있는 행위에 해당

  -클래스로 선언 및 사용: 객체들 사이의 공통의 구조와 행위가 클래스로 선언되 사용

 

클래스

  -클래스는 공통되는 것들을 묶어서 대표적인 이름을 붙인것

 -클래스가 개념적이라면, 객체는 구체적이다

  -데이터뿐 아니라 이 데이터에서 수행되는 메서드까지 포함해 묶은것

 

구조체

  -서로 연관된 자료들만 모아 놓은것

  -구성:

    -struct: 구조체를 나타내는 예약어

    -student: 구조체 태그명

    -구조체 멤버

 

인스턴스

  -같은 클래스에 속하는 개개의 객체로, 하나의 클래스에서 생성된 객체

  -클래스가 구체화되어, 클래스에서 정의된 속성과 성질을 가진 실제적인 객체로 표현되는 것

  -인스턴스화: 추상적인 개념인 클래스에서 실제 객체를 생성하는 것

 

캡슐화

  -사용자들에게 해당 객체의 기능과 사용법만 제공하고 내부는 감추어 쉽게 사용할 수 있는 하는 개념

  -객체 내부에 서로 관련된 데이터롸 그 데이터를 조작할 수 있는 메서드를 같이 포장하는 방식으로 그 안에 포함된 메서드만 사용해 데이터 값을 변결할 수 있는 구조

  -장점:

     -데이터 보호, 추상화 용이, 제공자와 이용자를 명확히 분리, 이용자에게 편리성 제공, 사용법이 쉬움, 변화에 대한 국지적영향, 객체간의 독립성 보장, 변경 용이성과 재사용성 증대

 

정보 은닉

  -외부에서 객체의 내부를 들여다볼 수 없다는개념, 다른 객체가 한 객체 내의 데이터 값을 직접 참조하거나 접근할 수 없다.

  -인터페이스와 구현의 명확한 분리: 각 모듈의 내부 항목에 대한 정보는 감추고, 인터페이스를 통해서만 메시지를 전달

  -다른 모듈을 변경하지 못한다: 모듈 안의 자료구조와 메서드에 사용된 알고리즘은 외부에서 그 값을 직접 변경못한다. 오직 공개 인터페이스로 정의된 메서드를 통해서만 접근 가능하다.

  UML에서 정보은닉의 정도 표기 

단계 C++ java
+ public public
# protected protected
~ X default
- private private

  특징: 블랙박스역할, 인터페이스를 통한 접근, 자료구조 변경이 용이

  정보은닉 개념 사용의 장점: 독립성 향상, 수정 용이, 이해도 증진, 확장성 증가

 

상속

  -상위개념으로 하위개념을 사용한ㄷ.

  -장점: 이해용이, 재사용성 증대, 확장 용이, 유지보수 용이. 추상화 가능

 

다형성

  -같은 이름의 메서드가 객체에 따라 다르게 동작하고 서로 다른 구현을 제공한다.

  -장점: 쉬운 변경, 확장, 유지보수의 용이

  -메서드 오버로딩, 오버라이딩에 대해서 경우에 따라 오버라이딩만 다형성이다라고만 하는 경우도 있다. 그 이유는 다형성의 조건으로 상속계층관게, 동적바인딩을 조건으로 제시하는데 오버로딩은 정적바인딩이기 때문이다. 메시지가 동일해야 하는데 이 메시지가 메서드의 이름까지만 볼것이냐, 파라미터까지 볼것이냐에 따라서도 갈린다. 자바는 메서드의 이름과 메서드의 인자까지 탐색을 한다. 

 

연관 관계(Assocation Relationship)

  -두 클래스는 서로 메시지를 주고 받으며 이용하는 관계

  -클래스 사이에서 발생, 링크: 객체 사이에서의 이용관계

  -아래처럼 화살표가 없으면 상호참조 관계

일반화-특수화 관계

  -IS-A관계

  -두 클래스 간의 상속 관계

    -하위 클래스는 상위 클래스의 각 속성과 메서드를 모두 상속받아 사용 가능

    -하위 클래스: 원래 가지고 있던 속성과 연산 + 물려받은 속성과 연산까지 모두 사용 가능

 

집합 관계(Aggregation Relationship)

  -연관 관계를 더 구체적으로 나타내는 것

  -거대한 객체 하나를 여러 개의 객체로 구성할 때 발생

  -전체와 부분 관계 성립

  -집합 관계에 속한 부분 객체는 다른 곳에서도 공유 가능 

포함 관계(Composition Relationship)

  -전체 객체에 완전히 전속되어 독립된 객체로 존재할 수 없는 부분 객체가 존재하는 관계

  -포함 관계의 부분 객체들은 전체 객체가 없어지면 같이 없어짐