1. 객체 지향 프로그래밍, Object Oriented Programming (OOP)
- 객체 지향 프로그래밍은 컴퓨터 프로그래밍의 패러다임 중 하나
- 프로그램을 명령어의 목록으로 보지않고, 여러 개의 독립된 단위인 '객체(Object)'들의 모임으로 파악하고자 하는 것
- 각각의 객체는 메시지를 주고받고, 데이터 처리가 가능
- 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용. 그러나 지나친 프로그램의 객체화 경향은 실제 세계의 모습을 그대로 반영하지 못한다는 비판을 받기도 함

2. 객체 지향적 설계 원칙
1. SRP(Single Reponsibility Principle) 단일 책임 원칙
- 클래스는 단 하나의 책임을 가져야 함.
- 클래스를 변경하는 이유는 단 하나의 이유이어야 함
2. OCP(Open-Closed Principle) 개방-폐쇄 원칙
- 확장에는 열려있고, 변경에는 닫혀있어야 함
3. LSP(Liskov Subsititution Principle) 리스코프 치환 원칙
- 상위 타입의 객체를 하위 타입의 객체로 치환해도, 상위 타입을 사용하는 프로그램은 정상적으로 동작해야 함
4. DIP(Dependency Inversion Principle) 의존 역전 원칙
- 고수준 모듈은 저수준 모듈의 구현에 의존하면 안됨
3. OOP의 특징
1. 캡슐화 (Encapsulation)
객체의 데이터를 외부에서 변경하지 못하도록 막고, 접근 제어 메소드(Access Method)로만 변경할 수 있도록 함
2. 추상화 (Abstraction)
- 불필요한 정보는 캡슐화하여 숨기고 중요한 정보만을 표현함.
- 객체가 가진 동작을 기준으로 추상화하여, 프로그래머는 보다 쉽게 객체를 사용할 수 있음
2. 상속 (Inheritance)
- 상속은 새로운 클래스가 기존의 클래스의 자료와 연산을 이용할 수 있게 하는 기능
- 또한, 하위 클래스에서 기능을 더 확장할 수 있음
3. 다형성 (Polymorphism)
- 다형성은 어떤 한 요소에 여러 개념을 넣어 놓는 것으로, 보통 '오버라이딩'(Overriding) 또는 '오버로딩'(Overloading)을 의미
4. Reference
- https://ko.wikipedia.org/w/index.php?title=%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D&action=edit§ion=11
- github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Development_common_sense#restful-api
'ETC' 카테고리의 다른 글
vscode 설정값 초기화하기 (settings.json) (0) | 2020.11.05 |
---|---|
카카오 AdFit 연동하기 (Tistory 블로그) (0) | 2020.10.30 |
Mac OS에서 Virtual Box 설치 실패하는 경우 (0) | 2020.07.21 |
CI/CD 개념 정리 (0) | 2020.07.08 |
[공유] 클래스 다이어그램 그리기 좋은 웹 서비스 (0) | 2020.06.07 |