객체지향 프로그래밍(OOP)에 대해 설명해주세요.
객체 지향 프로그래밍: OOP(Object Oriented Programing)
절차지향적 -> 객체지향적
객체: 대상 (붕어빵)
클래스: 공통된 속성들의 정의 (붕어빵 틀)
OOP: 객체들을 유기적으로 연결한 프로그래밍
OOP의 4가지 특징
- 추상화
- 추상화는 객체들의 공통된 특징을 파악해 정의해 놓은 설계 기법
- 목적과 관련이 없는 부분을 제거하여 필요한 부분만을 표현하기 위한 개념이다.
- 캡슐화
- 하나의 객체에 대해 그 객체가 특정한 목적을 위한 필요한 변수나 메소드를 하나로 묶는 것
- 불필요한 정보를 감출 수 있음: 정보은닉(private)
- 상속
- 부모 클래스의 속성을 자식 클래스에서 물려받아 사용하는 것
- 단일 상속 (다중 상속이 인터페이스의 목적은 아니나 인터페이스를 통해 다중상속 기능 가능)
- 코드의 중복을 없애기 위함: 코드 재사용
- 다형성
- 다형성은 형태가 같은데 다른 기능을 하는 것을 의미
- 오버로딩(Overloading) ex) System.out.println()에는 다양한 타입이 들어갈 수 있지만 동일하게 작동
- 오버라이딩(Overriding): 상위 클래스의 메서드를 하위 클래스에서 재정의
- 함수형 인터페이스(Funtional Interface)
객체 지향 프로그래밍( OOP ) 개념
OOP(Object-Oriented Programming, 객체 지향 프로그래밍) 이란?
[OOP] 객체지향 프로그래밍(Object Oriented Programming)이란?
다형성(Polymorphism)이란?
객체 지향 설계의 5원칙 S.O.L.I.D
- SRP(Single Responsibility Principle): 단일 책임 원칙
- 클래스(객체)는 단 하나의 책임만 가져야 한다는 원칙
- 프로그램의 유지보수 성을 높이기 위한 설계 기법
- OCP(Open Closed Priciple): 개방 폐쇄 원칙
- 확장에 열려있어야 하며(쉽게), 수정(변경)에는 닫혀(최소)있어야 한다는 의미
- 추상화 사용을 통한 관계 구축을 권장
- 다형성과 확장이라는 객체지향의 장점을 극대화하는 설계 원칙
- LSP(Listov Substitution Priciple): 리스코프 치환 원칙
- 부모 클래스의 행동 규약을 자식 클래스가 위반하면 안 됨
- ISP(Interface Segregation Principle): 인터페이스 분리 원칙
- 인터페이스의 단일 책임 원칙
- 인터페이스는 한번 구성하였으면 왜만해선 변하면 안되는 정책 개념
- DIP(Dependency Inversion Principle): 의존 역전 원칙
- 참조하려는 대상의 상위 요소(추상 클래스 or 인터페이스)로 참조
- 각 클래스간의 결합도(coupling)을 낮추는 것
[OOP] 💠 객체 지향 설계의 5가지 원칙 - S.O.L.I.D