-
기술 면접 - 객체 지향기술 면접 2021. 4. 20. 02:05
객체지향이란
- 현실에 존재하는 사물을 있는 그대로 모델링하여, 이들의 행위와 속성을 정의하고, 절차적이 아닌 객체가 중심이 되어 실제 사물이 동작하는 방식으로 설계하는 방식
- 사물에 대해서는 객체라고 부르며, 해당 사물이 하는 행위를 메소드로 정의하고, 해당 사물이 가지는 속성을 변수라고 정의합니다
객체 지향의 4대 특성
캡슐화
- 객체의 속성을 보호하기 위해서 사용함
- 장점
- 객체 지향의 패러다임 중 하나인 추상화를 제공
- 실제로 메서드가 어떻게 동작하는지는 외부에서는 이해할 필요가 없으며, 이를 단순 호출만으로 해당 기능을 실행 할 수 있고, 이를 통해서 객체 단위로 프로그램 설계가 가능
- 재사용성 향상
- 한 객체에 관련된 속성 및 메서드는 모두 캡슐화의 형태로 제공됨으로, 객체의 모듈성과 응집도가 높아짐
- 유지보수 효율성 향상
- 객체 지향의 패러다임 중 하나인 추상화를 제공
상속
객체지향에서의 상속은 속성의 상속이 아닌, 하위로 내려갈수록 구체화 되는 것
장점
프로그램 구조에 대한 이해도 향상
- 최상위 클래스의 구조를 보고, 하위 클래스의 동작을 이해할 수 있음
재사용성 향상
- 상속을 이용하여, 해당 클래스에 필요한 속성 및 메서드를 모두 정의하지 않고, 상속을 받아서 사용
다형성
- 다형성은 하나의 개체가 여러 개의 형태로 변화 하는 것, 이를 객체지향에서도 유사하게 사용하고 있음
- 다형성은 오버라이딩을 통해서 가능
추상화
공통의 속성이나 기능을 묶어 이름을 붙이는 것
객체 지향적 관점에서 클래스를 정의하는 것을 바로 추상화라고 정의 내릴 수 있겠다.
좀 더 살펴보면 물고기, 사자, 토끼, 뱀이 있을 때 우리는 이것들을 각각의 객체라 하며 이 객체들을 하나로 묶으려 할 때, 만약 동물 또는 생물이라는 어떤 추상적인 객체로 크게 정의한다고 하자. 이때 동물 또는 생물이라고 묶는 것을 추상화라고 한다.
객체 지향 설계 5원칙
- 좋은 소프트웨어 설계를 위해서는 결합도는 낮추고 응집도는 높여야 한다
결합도
- 모듈 간의 상호 의존 정도를 나타내는 지표
- 결합도가 낮으면 모듈 간의 상호 의존성이 줄어들어서 객체의 재사용 및 유지보수가 유리함
응집도
- 하나의 모듈 내부에 존재하는 구성 요소들의 기능적 관련성
- 응집도가 높은 모듈은 하나의 책임에 집중하고 독립성이 높아져, 재사용 및 유지보수가 용이
1. SRP( Single Responsibility Principle ) 단일 책임 원칙
- 어떠한 클래스를 변경해야 하는 이유는 한가지 뿐이어야 한다
2. OCP(Open Closed Principle) 개방 폐쇄 원칙
- 자신의 확장에는 열려있고, 주변의 변화에 대해서는 닫혀 있어야 함
- 상위 클래스 또는 인터페이스를 중간에 둠으로써, 자신은 변화에 대해서 폐쇄적이지만, 인터페이스는 외부의 변화에 대해서 확장을 개방해 줄 수 있다
3. LSP (리스코프 치환 원칙)
- 서브 타입은 언제나 자신의 기반(상위) 타입으로 교체할 수 있어야 한다
4. ISP(Interface Segregation Principle) 인터페이스 분리 원칙
- 클라이언트는 자신이 사용하지 않는 메서드에 의존 관계를 맺으면 안된다
5. DIP(Dependency Inversion Principle) 의존 역전 원칙
- 의존 관계를 맺을 때 변화하기 쉬운 것보다는 변화하기 어려운 것에 의존해야 한다
'기술 면접' 카테고리의 다른 글
기술 면접 - 자료 구조 (선형 구조) (0) 2021.04.22 기술 면접 - 디자인 패턴 (0) 2021.04.21 기술 면접 - 데이터 베이스 (2) (0) 2021.04.20 기술 면접 - 데이터 베이스 (1) (0) 2021.04.20 기술 면접 - 운영체제 (4) (0) 2021.04.19