채널오렌지 THE I.O.T
[CS] 객체지향 프로그래밍은 무엇인가요? 본문
객체지향 프로그래밍을 OOP (Object-Oriented Programming)이라 한다. 현실 세계에 존재하는 사물들을 객체라 하고 프로그램 설계에 반영하는 기법이다.
특징
추상화 필요한 정보을 중심으로 간소화 한다. 불필요한 부분은 숨기고 인터페이스와 구현을 분리시킨다.
캡슐화 객체에 필요한 메소드와 데이터를 그룹화 시킨다. 정보 은닉하여 외부의 데이터 접근을 막는다.
상속 중복되는 코드의 재사용을 위해 상위 클래스의 기능을 하위 클래스가 사용할수 있게 한다.
다형성 변수와 메소드를 상황에 따라 다른 결과를 내게한다.
- Overriding 부모 클래스 메서드를 자식클래스에서 재정의
- Overloading 한 클래스에서 메소드를 이름만 같고 파라미터와 자료형을 다르게 한다.
객체지향 vs 절차지향
객체지향
재사용성이 높아지고 유지보수가 쉽고 코드가 간결해진다는 장점이 있고, 실행 및 처리 속도가 절차지향 보다 느린 단점이 있다.
절차지향
입력을 명시된 순서대로 처리하는 방식이다. 대표적인 언어는 c언어다. 컴퓨터의 처리구조와 비슷해 실행 및 처리 속도가 객체지향보다 빠르다는 장점이 있고, 순차적인 처리를 하므로 코드의 순서가 바뀌면 다른 결과를 낼 수 있다는 단점이 있다.
SOLID 5가지 설계 원칙
SRP (Single Responsibility Principle) 한 클래스는 하나의 책임(목적)만 가진다. 그래서 클래스를 변경하는 이유는 하나여야 한다.
OCP (Open/Closed Principle) 확장엔 open 변경은 Closed
LSP (Liskov's Substitution Principle) 상위 타입의 객체를 하위 타입으로 바꾸어도 프로그램은 일관성 있게 동작한다.
ISP (Interface Segregation Principle) 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다, 클라이언트는 이용안하는 메소드에 의존하지 않도록 인터페이스를 분리해야 한다.
DIP (Dependency Inversion Principle) 구체화(구현된 클래스)에 의존하지 않고 추상화에 의존한다.
'Computer Science' 카테고리의 다른 글
[CS] MVC패턴은 무엇일까요? (0) | 2022.06.04 |
---|---|
[CS] 큐와 우선순위 큐를 설명해보세요 (0) | 2022.06.01 |
[CS] Linked List가 무엇인가요? (0) | 2022.05.31 |
[CS] 웹,인터넷,네트워크는 무엇인가요? (0) | 2022.05.30 |
[CS] 동기/비동기/블럭/논블럭 (0) | 2022.05.27 |