Java
객체지향
기초공사
2023. 4. 3. 19:00
객체지향 프로그래밍이란?
현실세계의 개체를 하나의 객체로 만들어 기계를 조립하듯 제품을 만드는 프로그래밍 방식을 말한다.
객체 : 데이터와 데이터를 처리하는 함수를 묶어 놓은 것.
객체지향 프로그래밍 언어의 특징
- 추상화
- 캡슐화
- 상속
- 다형성
추상화
객체의 공통된 특징들을 추출해 설계도를 만드는 작업
캡슐화
데이터와 데이터를 처리하는 함수를 하나로 묶는 것
사용자는 interface로 소통하고 굳이 내부를 알 필요가 없다.
- 정보은닉이 되어있어 파급효과가 적다.
- 유지보가 좋다.(재사용성이 용이)
- 인터페이스가 단순해지고 결합도가 낮아진다.
상속
상위 클래스의 속성(변수)과 기능(method)들을 하위 클래스가 물려받는 것
확장의 개념
- 재사용이 가능
※다중상속 : 한 클래스가 두 개 이상의 상위 클래스로부터 상속받는 것 (c++은 가능, 자바는 불가능)
다형성
여러 가지 형태를 가지고 있다는 의미
자식 객체의 타입 ⊇ 부모 객체의 타입
- 오버로딩
함수의 이름이 같더라도 매개변수의 개수나 타입이 다르면 다른 함수로 인식한다. (함수의 이름 재사용)
- 오버라이딩
부모클래스의 메서드를 자식 클래스에서도 같은 이름으로 재정의해 사용가능
(+ 연산자의 경우 숫자를 연산하는 연산자이지만 오버라이딩해 문자열을 이어주는 연산자로 재정의해 사용이 가능하다.)
객체지향의 장단점
장점
- 유지보수가 용이하다.
- 재사용성이 좋다.
단점
- 상대적으로 느린 실행속도
- 필요한 메모리가 증가한다.
객체지향 설계 원칙
시스템의 변경이나 확장에 유연한 시스템을 설계하기 위해 만든 5가지 원칙들의 앞글자를 따서 SOLID원칙이라고 부른다.
- 단일 책임 원칙 (Single Responsibility Principle)
- 객체는 단 하나의 책임만을 가져야 한다.
- 응징도는 놓고 결합도는 낮게 설계해야 한다.
- 개방 폐쇄 원칙 (Open Closed Principle)
- 기존의 코드를 변경하지 않고 기능을 추가할 수 있게 설계해야 한다.
- 공통인터페이스를 하나의 인터페이스로 묶어 캡슐화하는 방식이 대표적이다.
- 리스코프 치환원칙 (Liskow Subsitution Principle)
- 자식 클래스는 최소한 부모 클래스에서 가능한 행위는 수행할 수 있어야 한다.
- 자식 클래스는 부모클래스의 책임을 무시하거나 재정의하지 않고 확장만 수행하도록 해야 한다.
- 인터페이스 분리원칙 (Interface Segregation Principle)
- 자신이 사용하지 않는 인터페이스와 의존관계를 맺거나 영향을 받지 않아야 한다.
- 인터페이스가 갖는 하나의 책임이다.
- 의존 역전 원칙 (Dependency Inversion Principle)
- 각 객체들 간의 의존 관계가 성립될 때 추상성이 낮은 클래스보다 추상성이 높은 클래스와 의존 관계를 맺어야 한다.
Reference
- 객체지향 프로그래밍이란?
- 시나공 2022 정보처리기사 필기