Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

객체지향 프로그래밍과 객체지향 설계 본문

Java/객체지향

객체지향 프로그래밍과 객체지향 설계

Seung__ 2021. 11. 3. 23:50

1. 추상화


  • 어떤 영역에서 필요로 하는 속성이나 기능을 추출하는 작업
  • 데이터 구조, 표현방법에 대한 추상화
  • 처리 과정에 대한 추상화
  • 클래스 = 객체의 설계도
  • 메서드 = 객체가 해야할 기능

 

2. 캡슐화


  • 데이터를 감사서 외부에서 사용 가능한 부분만을 제공(information hiding)
  • 사용하는 코드(클라이언트 코드)가 세부적인 사항을 알 필요가 없음
  • 단순한 접근을 제공하여 오류가 생길 부분을 감소시킴

 

3. 상속성


  • 일반적인(general) 개념의 객체에서 보다 구체적인(specific) 개념의 객체의 관계를 표현
  • 상속관계의 클래스는 상위 클래스의 타입을 내포함
  • 상위 클래스의 속성과 기능을 하위 클래스에서 사용하거나 재정의 할 수 있음

 

4. 다형성(polymorphism)


  • 같은 메세지, 같은 구현데 대해 각 객체가 다른 표현과 결과를 나타내는 것.
  • 클래스의 상속, 인터페이스의 구현 시에 각각의 다른 구현을 가진 클래스들이 상위 타입으로 업캐스팅 되고
    이 때 각 클래스에서 오버라이딩한 메서드가 존재하는 경우 같은 상위 타입으로 선언된다 하더라도 각기 다른 인스턴스의 메서드가 호출되는 것.
  • c++의 경우 virtual function 만이 재정의된 함수가 호출되지만 자바의 경우 모든 메서드가 가상함수 기반으로 구현되므로 하위 클래스에 재정의된 메서드가 있는 경우 재정의된 메서드가 호출됨.

 

5. 객체 지향 설계


  • Design Heuristics
    • Abstract class vs. Concrete class
    • Class Inheritance vs. Object Composition
    • Interface Inheritance vs. Implementation Inheritance Etc...

 

6. 응집도(Cohesion), 결합도(coupling)


  • 잘 만들어진 소프트웨어는 응집도는 높고 결합도는 낮아야 함
  • 응집도
    • 하나의 모듈, 객체 내부의 요소들간의 연관성
    • 하나의 책임을 구현하는 하나의 객체는 높은 응집도를 가짐
  • 결합도
    • 객체 상호관의 연관관계
    • 결합도가 높으면 하나의 객체를 수정할 때 다른 객체도 수정해야 함
    • 상속을 하면 결합도 강해짐

'Java > 객체지향' 카테고리의 다른 글

객체 자신을 가리키는 this  (0) 2021.08.10
스택 메모리, 힙 메모리, 인스턴스 등  (0) 2021.06.23
객체, 객체 지향 프로그래밍  (0) 2021.06.23
Comments