✔️ 객체 지향 프로그래밍
객체 지향 프로그래밍이란?
- 가능한 모든 물리적, 논리적 요소를 객체로 만드는 것
- 특정한 개념의 함수와 자료형을 함께 묶어서 관리하기 위해 탄생
- 객체 내부에 자료형(필드)와 함수(메소드)가 함께 존재하게 됨
- 객체 지향으로 구현하게 되면, 객체 간의 독립성이 생기고 중복코드의 양이 줄어드는 장점이 있으며
독립성이 확립되면 유지보수에도 도움이 되게 됨
- 객체 지향의 특징
- 추상화 : 필요로 하는 속성이나 행동을 추출하는 작업
세부적인 사물들의 공통적인 특징을 파악한 후 하나의 집합으로 만들어내는 것 - 캡슐화 : 낮은 결합도를 유지할 수 있도록 설계하는 것
한 곳에서 변화가 일어나도 다른 곳에 미치는 영향을 최소화하도록 함
정보 은닉을 활용해 객체 안의 모듈 간의 요소가 밀접한 관련이 있는 것으로 구성하여 응집도를 높이고
독립적으로 만들어진 객체들 간의 의존도를 최대한 낮게 만들어 결합도를 줄이도록 함 - 상속 : 여러 개체들이 지닌 공통된 특성을 부각시켜 하나의 개념이나 법칙으로 성립하는 과정
자식 클래스를 은닉하도록 하여 외부로부터 영향을 않도록 함
하지만 상위 클래스의 변경이 어려워지거나 불필요한 클래스가 증가할 수 있는 등의 단점이 존재함 - 다형성 : 서로 다른 클래스의 객체가 같은 메시지를 주고 받았을 때 각자의 방식으로 동작하는 능력
부모 클래스의 메소드를 자식 클래스가 오버라이딩해서 자신의 역할에 맞게 활용하도록 함
- 추상화 : 필요로 하는 속성이나 행동을 추출하는 작업
- 객체 지향 설계 과정
- 제공해야 할 기능을 찾고 세분화한다.
- 기능을 알맞은 객체에 할당한다.
- 기능을 구현하는데 필요한 데이터를 객체에 추가한다.
- 그 데이터를 이용하는 기능을 넣는다.
- 기능을 최대한 캡슐화하여 구현한다.
- 객체 간에 어덯게 메소드 요청을 주고받을 지 결정한다.
- 객체 지향 설계 원칙 (SOLID)
- 단일 책임 원칙 (SRP : Single Responsibility Principle)
클래스는 단 한 개의 책임을 가져야 한다. - 개방-폐쇄 원칙 (OCP : Open Close Principle)
확장에는 열려 있어야 하고, 변경에는 닫혀 있어야 한다. - 리스코프 치환 원칙 (LSP : Loskov Substitution Principle)
상위 타입의 객체를 하위 타입의 객체로 치환해도, 상위 타입을 사용하는 프로그램은 정상적으로 동작해야 한다. - 인터페이스 분리 법칙 (ISP : Interface Segregation Principle)
인터페이스는 그 인터페이스를 사용하는 클라이언트를 기준으로 분리해야 한다. - 의존 역전 원칙 (DIP : Dependency Inversion Principle)
고수준 모듈은 저수준 모듈의 구현에 의존하면 안되며, 저수준 모듈이 고수준 모듈에서 정의한 추상 타입에 의존해야 한다.
- 단일 책임 원칙 (SRP : Single Responsibility Principle)
'Tech Interview > Software Engineering' 카테고리의 다른 글
[Software Engineering] 데브옵스 (0) | 2024.02.02 |
---|---|
[Software Engineering] 함수형 프로그래밍 (0) | 2024.02.01 |
[Software Engineering] 애자일 (0) | 2024.01.31 |
[Software Engineering] 테스트 주도 개발 (0) | 2024.01.31 |
[Software Engineering] 시큐어 코딩 (0) | 2024.01.31 |