Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Proxy
- 김영한
- QueryDSL
- Servlet
- JPQL
- 스프링
- Spring Boot
- spring
- db
- JDBC
- transaction
- 인프런
- java
- springdatajpa
- 자바
- kotlin
- Greedy
- Exception
- jpa
- 그리디
- SpringBoot
- 백준
- Thymeleaf
- AOP
- pointcut
- Android
- 스프링 핵심 기능
- http
- 스프링 핵심 원리
- 알고리즘
Archives
- Today
- Total
개발자되기 프로젝트
객체지향 프로그래밍과 객체지향 설계 본문
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