객체지향 프로그래밍 - Object Oriented Programming
- 현실 세계의 사물과 같이 객체를 만들고, 객체에서 필요한 특징을 뽑아 프로그래밍 수행
- 4대 특징
- 추상화(Abstraction)
- 객체들의 공통적인 특징을 뽑아 이름을 붙이는 것
- 캡슐화(Encapsulation)
- 특정 객체가 독립적으로 역할을 수행하기 위해 필요한 데이터 및 기능을 하나로 묶은 것
- 내부에서 정보 은닉을 통해 내부 결합도는 높이고 외부에서는 결합도를 낮추기 위함
- 정보를 객체안에 포함시키고, 그 정보에 대한 직접적인 접근은 허용하지 않고, 인터페이스를 통해 외부에서 접근 할 수 있도록 함.
- ex) 접근 제어자 : public, private
- 상속(Inheritance)
- 상위 개념의 특징을 하위 개념이 물려 받음
- 상위 클래스의 특성을 재사용하고 확장한다
- 인터페이스
- 다중 상속 대신에 사용
- 어떤 객체가 해야할 일을 정의하는 추상 자료형
- 다형성(Polymorphism)
- 모듈이 갖고있는 정체성과 표현 방식
- 하나의 객체에 여러가지 타입을 대입할 수 있음
- 오버라이딩 (형식이 같은데 기능이 다른 메소드)
- 같은 메서드 이름/같은 인자 목록/상위 클래스의 메서드 재정의
- 오버로딩 (리턴값이 다른 동일한 이름의 메소드)
- 같은 메서드 이름/다른 인자 목록/다수의 메서드 종목 정의
- 추상화(Abstraction)
💡 캡슐화와 은닉화의 차이? 캡슐화는 메서드 안에서 어떠한 일이 일어나고있는지 모르게 해야하는 것 은닉화는 외부에서 객체의 속성에 함부로 접근하지 못하게 하는 것
-
- 설계 원칙(SOLID)
- SRP(Single Responsibility Principle) : 단일 책임 원칙
- 클래스는 단 하나의 책임을 가져야한다
- 클래스를 변경하는 이유는 단 하나의 이유여야 한다
- OCP(Open-Closed Principle) : 개방-폐쇠 원칙
- 확장에는 열려있어야 하고 변경에는 닫혀있어야한다.
- 코드의 일반화를 통해 코드의 변경 없이 확장이 가능하도록
- 코드의 추가는 변경이 아니다
- LSP(Liskov Substitution Principle) : 리스코프 치환 원칙
- 상위 타입의 객체를 하위 타입의 객체로 치환해도 상위 타입을 사용하는 프로그램은 정상적으로 동작해야한다.
- 부모 객체를 자식 객체로 변경해도 프로그램에 문제가 없야함
- ISP(Interface Segregation Principle) : 인터페이스 분리 원칙
- 인터페이스는 그 인터페이스를 사용하는 클라이언트를 기준으로 분리해야함
- 객체가 필요로하는 기능만 가지도록 제한하는 원칙
- 불필요한 기능의 상속/구현을 최대한으로 방지
- DIP(Dependency Inversion Principle) : 의존 역전 원칙
- 고수준 모듈은 저수준 모듈의 구현에 의존해서는 안된다
- 가급적 객체의 상속은 인터페이스를 통해 이루어져야하 한다
- 자식 class의 메소드 때문에 인터페이스를 고치는 행위는 있어서는 안된다.
- SRP(Single Responsibility Principle) : 단일 책임 원칙
- <참고링크> https://blog.itcode.dev/posts/2021/08/17/dependency-inversion-principle
- 설계 원칙(SOLID)
반응형
'이론 공부! > 기술 면접 준비' 카테고리의 다른 글
[Data Strucutre] 면접 질문 대비 (0) | 2022.08.24 |
---|---|
[Data Structure] Hash Table, Graph 정리 (0) | 2022.08.24 |
[Data Structure] Tree 관련 정리 (0) | 2022.08.24 |
[Data Structure] Array, ArrayList, Stack, Queue (0) | 2022.08.24 |
[JAVA 개발 지식] 면접 질문 대비 (0) | 2022.08.24 |