1. 의미 :
애플리케이션을 구성하는 요소를 각각의 객체로 바라보고 객체들을 유기적으로 연결하여 프로그래밍하는 것을 객체지향 프로그래밍이라고 한다. 코드의 재사용성과 중복제거를 통해 유지보수의 용이성을 높이고자 하는 것이 궁극적인 목적이다.
2. 객체란 :
사람 한 명 한 명을 객체라고 할 수 있다. 사람은 일반적으로 공통적인 속성(눈, 코, 입, 귀, 팔, 다리) 등을 갖고 있지만 생김새는 다 제 각각이다. 따라서 사람 한 명 한 명은 각각 다른 객체로 분류된다.
3. 클래스란 :
사람 한 명 한 명이 갖고있는 공통적인 속성들을 모아서 정의 내린 것을 클래스라고 한다. 흔히 여러 책에서 클래스와 객체의 관계를 설명할 때 설계도면을 예시로 드는 경향이 있다. 설계도면이 클래스이고 설계도면에 따라 찍어낸 대상이 각각의 객체라는 것이다.
4. OOP의 특징:
1) 추상화 : 추상화는 객체들의 공통된 특징을 파악해 정의해 놓은 설계기법이다.
2) 캡슐화 : 자바에서 접근제어자(public, private, protected, default)중 private를 이용하여 정의된 내용을 자신의 클래스 내에서만 사용할 수 있게 할 수 있다. 캡슐화를 하면 불필요한 정보를 감출 수 있기 때문에 정보은닉을 할 수 있다.
3) 상속 : 상속을 통해 코드의 중복 문제를 일부 해결 할 수 있다.
4) 다형성 : 오버라이딩, 오버로딩
5. OOP의 5가지 설계원칙(SOLID-자세한 설명 https://prde.tistory.com/62 )
- SRP(Single Responsibility Principle, 단일 책임 원칙): 클래스는 단 하나의 목적을 가져야 하며, 클래스를 변경하는 이유는 단 하나의 이유여야 한다.
- OCP(Open-Closed Principle, 개방 폐쇠 원칙): 클래스는 확장에는 열려 있고, 변경에는 닫혀 있어야 한다.
- LSP(Liskov Substitution Principle, 리스코프 치환 원칙): 상위 타입의 객체를 하위 타입으로 바꾸어도 프로그램은 일관되게 동작해야 한다.
- ISP(Interface Segregation Principle, 인터페이스 분리 원칙): 클라이언트는 이용하지 않는 메소드에 의존하지 않도록 인터페이스를 분리해야 한다.
- DIP(Dependency Inversion Principle, 의존 역전 법칙): 클라이언트는 추상화(인터페이스)에 의존해야 하며, 구체화(구현된 클래스)에 의존해선 안된다.
'CS > ETC.' 카테고리의 다른 글
그누보드, 영카트 (0) | 2021.12.18 |
---|---|
서버 성능 테스트 (0) | 2021.08.11 |
ServerSideRendering vs. ClientSideRendering (0) | 2021.07.07 |
리눅스 메모리 관리 (0) | 2021.06.26 |
프로세스(Process)와 스레드(Thread) (0) | 2021.06.22 |