OOP(객체지향 프로그래밍)
객체지향 프로그래밍
컴퓨터 프로그래밍 패러다임(견해, 사고법)의 하나로, 프로그래밍에서 필요한 데이터를 추상화시켜 상태(속성, 어트리뷰트)와 행위(메소드)를 가진 객체로 만들고, 그 객체간의 상호작용을 통해 로직을 구성하는 방법
1. 장점
- 다른 클래스를 가져와 사용할 수 있고 상속받을 수 있어 코드의 재사용성 증가
- 절차지향보다 유지보수가 간단
- 클래스 단위의 모듈화가 가능하여 대형 프로젝트에 적합
2. 단점
- 처리속도가 상대적으로 느리다
- 객체가 많으면 용량이 커진다
- 설계시 많은 노력과 시간이 필요하다
3. 키워드
- 클래스 : 현실 세계의 객체를 추상화시켜, 속성과 메소드로 정의한 것 (논리적 개념)
- 인스턴스 : 클래스에서 정의한 것을 토대로 만든 실제 메모리상에 할당된 것, 실제 데이터
- 추상화 : 객체지향 관점에서 클래스를 정의하는 것, 불필요한 정보 외 중요한 정보만 표현하여 공통의 속성과 기능을 묶어 이름을 붙이는 것
- 캡슐화 : 코드를 수정없이 재활용하는 것을 목적으로 함. 클래스라는 캡슐에 기능과 특성을 담아 목적을 기준으로 묶는다. *은닉화와의 차이 - 은닉화는 캡슐화의 일부이며, 목적으로 묶인 캡슐 안을 사용자가 볼 수 없단 것이 은닉화.
- 상속 : 클래스로부터 속성과 메소드를 물려받는 것. 다른 클래스를 가져와서 수정할 일이 있다면, 그 클래스를 직접 수정하는 대신 상속을 받아 변경하고자 하는 부분만 변경
- 다형성 : 하나의 변수명이나 함수명이 상황에 따라서 다르게 해석될 수 있음. 대표적인 다형성이 오버라이딩과 오버로딩
4. 5가지 법칙 - SOLID
- Single Responsibility Principle, 단일 책임 법칙 : 각 클래스는 목적을 하나씩만 가지고 그에 대한 책임을 져야 한다.
- Open Close Principle, 개방 폐쇄 법칙 : 각 클래스는 클래스에 대한 수정을 폐쇄하고, 확장에 대해 개방해야 한다. 즉, 클래스를 수정해야 한다면 그 클래스를 상속, 즉 확장하여 수정한다.
- Liskov Substitusion Principle, 리스코프 치환 법칙 : 자식 클래스를 사용 중일 때, 거기에 부모 클래스로 치환하여도 문제가 없어야 한다.
- Interface Segreation Principle, 인터페이스 분리 법칙 : 각 행위에 대한 인터페이스는 서로 분리되어야 한다. 핸드폰을 예로 들면, 전화를 하는데 핸드폰 카메라가 방해되면 안된다.
- Dependency Inversion Principle, 의존성 역전 법칙 : 상위 클래스가 하위 클래스에 의존하면 안된다는 법칙. 즉 기본적인 공통되는 속성을 하위 클래스에 의존하면 안된다.
'programming language' 카테고리의 다른 글
RESTful API - 두 번째 이야기 (0) | 2020.05.03 |
---|---|
RESTful API - 첫 번째 이야기 (0) | 2020.04.27 |
댓글 개