hmk run dev
객체지향 프로그래밍 OOP 본문
OOP란 Object-Oriented Programming 의 줄임말
객체지향과 대비되는 말로 절차지향이 있다 절차지향 프로그래밍은 프로그램을 함수단위로 쪼개 큰 문제를 작은 단위들로 나누어 해결하는 방식으로 top-down 방식이라고도 한다.
프로그램을 설계할떄 객체지향 보다 비교적 적은시간이 들긴하지만 필요한 데이터가 여기저기 분산되어 있고 프로그램에 변화를 주었을때 여기저기서 문제가 발생할 수 있는 문제점 등이 있다.
객체지향은 큰 문제를 작게 나누는 것이 아닌 작은 문제들을 해결하는 객체들을 만들어 객체끼리 서로 소통하면서 큰문제를 해결하는 bottom-up 방식이라고 할 수 있다.
설계시 비교적 시간이 오래걸리지만 코드의 재사용성, 유지보수의 용이, 간결한 코드 등 많은 장점을 가지고 있는 프로그래밍 방식이다.
< CLean Code >의 저자, 로버트 마틴이 말하는
OOP 객체지향의 5가지 원칙 SOLID
S (SRP : Single Responsibility Principle)
한 클래스는 하나의 책임만 가지고 있어야 한다.
O (OCP : Open/Closed Principle)
확장은 열려 있어야하나, 변경에는 닫혀 있어야한다
L (LSP : Liskov’s Substitution Principle)
프로그램의 객체는 프로그램의 정확성을 지키면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
I (ISP : Interface Segregation Principle)
특정 사용자를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 더 낫다.
D (DIP : Dependency Inversion Principle)
추상화에 의존하며 구체화에 의존하면 안된다.
OOP의 4가지 특징
1. 캡슐화( encapsulation )
- 객체 내부의 구현 내용을 외부에 서 볼 수 없게 은닉해놓은 것
- 변수와 메소드들을 하나로 묶음
- 데이터를 외부에서 직접 접근하지 않고 함수를 통해서만 접근가능
- 접근 제어 선언 ex)
- public : 클래스 외부에서 접근 가능
- private : 클래스 내부에서만 접근가능 (함수를 통해 접근가능)
- protected : 상속받은 자식 클래스에서만 접근 가능
2. 상속( inheritance )
- 자식 클래스가 부모 클래스의 특성과 기능을 물려받음
- 기능의 일부분을 수정할때 자식 클래스에선 물려받아 수정 후 사용
- 상속은 캡슐화를 유지하고 클래스 재사용성을 높여줌
3. 추상화( abstracion )
- 인터페이스로 클래스들의 공통적인 특성(변수, 메소드)들을 묶어서 표현한것
- ※ 인터페이스는 프로그램을 만들기위한 설계도 혹은 개발자들의 약속? 이라고 할 수도 있다..!
4. 다형성( polymorphism )
- 어떤 변수, 메소드가 상황에 따라 다른 결과물을 만들어 내는 것
- ex ) 오버로딩(Overloading) : 하나의 클래스에서 메소드의 이름이 같지만, 파라메터가 다른 것
- 오버 라이딩(Overriding) : 부모 클래스의 메소드를 자식 클래스의 용도에 맞게 재정의 하여 코드의 재사용성을 높임
참고
📚OOP의 5원칙과 4가지 특성
Object-Oriented Programming 의 줄임말객체 지향 프로그래밍 방식입력을 받아 명시된 순서대로만 처리하고 결과를 내는 방식절차적 프로그래밍 방식의 개선된 형태프로그램을 함수단위로 나누고 함수
velog.io
'programming' 카테고리의 다른 글
좋은 개발자가 되기 위한 자질은?(Feat. 존카맥) (0) | 2023.04.29 |
---|
Comments