728x90
객체지향 프로그래밍은 프로그래밍에서 필요한 데이터와 동작을 객체로 만들어 구현하는 기법이다.
클래스와 객체를 기반으로, 객체지향의 주요 특징인 캡슐화, 상속, 추상화, 다형성 등의 기법을 사용해 프로그래밍을 한다.
클래스 : 속성과 행위를 변수와 메서드로 정의한 것.
객체 : 클래스에서 정의한것을 토대로 실제 메모리에 할당 된 것.
ex) 레고(객체) 를 조합해서 프로그래밍을 하는 것을 객체지향 프로그래밍
객체지향의 장점
1. 상속을 통한 코드 재사용성이 용이하다.
2. 유지보수가 비교적 쉽다
객체지향의 단점
1. 처리속도가 상대적으로 느리다.
2. 설계시 많은 시간과 노력이 필요하다.
- 캡슐화 : 변수와 메서드를 하나로 묶는 것 ( 낮은 결합도 유지 )
- 상속 : 속성과 행위를 하위클래스에게 물려주는 것 ( 기존의 클래스의 메소드를 이용 )
- 추상화 : 객체에서 공통된 속성과 행위를 추출하는 것 ( 불필요한 정보를 숨기고 중요한 정보만 표현 )
- 다형성 : 한개의 변수명, 메소드명에 상황에 따라 다른의미로 해석 ( 오버라이딩 : 상위클래스 메소드 재정의 / 오버로딩 : 같은 이름의 메서드에 인자의 개수 또는 자료형을 다르게 설정 )
좋은 객체지향을 위한 설계 방법 SOLID 관련 포스팅
- SRP : 단일 책임 원칙 ( Single Responsibility Principle)
- 하나의 클래스는 하나의 책임만 가져야 한다. - OCP : 개방-폐쇄 원칙 ( Open/Closed Principle)
- 확장에는 열려있으나 변경에는 닫혀 있어야 한다. - LSP : 리스코프 치환 원칙 ( Liskov Substitution Principle )
- 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다. - ISP : 인터페이스 분리원칙 ( Interface Segregation Principle )
- 인터페이스를 클라이언트에 특화되도록 분리 - DIP : 의존관계 역전 원칙 ( Dependency inversion priciple )
- 구체화에 의존하지 말고 추상화에 의존해야 한다.
https://josteady.tistory.com/653
728x90
'Knowledge > CS' 카테고리의 다른 글
[CS] 프로세스의 구조 (0) | 2022.12.06 |
---|---|
[CS] 인덱스(Index) 란? (0) | 2022.12.04 |
[CS] 뮤텍스(Mutex) 세마포어(Semaphore) 란? (0) | 2022.12.02 |
[CS] HTTP1.1 의 keep alive 란? (0) | 2022.12.01 |
[CS] 프로세스와 스레드 개념, 차이 (0) | 2022.11.30 |
댓글