프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다.
추상화 | 인터페이스로 공통적인 특성들을 묶어 표현하는 작업 |
---|---|
캡슐화 | 연관성이 있는 변수와 메소드를 클래스로 묶는 작업 |
[캡슐화의 목적]
다중 상속은 불가능하다. → 필요에 따라 인터페이스를 사용할 수 있다. | | 다형성 | 하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미한다.
class Person{} class Man extends Person {} → Person man = new Man(); // 허용 |
| 장점 | 1. 코드 재사용이 용이하다
객체의 개수가 많아지면 용량이 커진다
설계시 많은 시간과 노력이 필요하다 |
절차 지향 프로그래밍 | 객체 지향 프로그래밍 |
---|---|
데이터 중심의 함수를 구현하여 프로그램을 순차적으로 처리하는 기법 | 기능 중심으로 데이터와 기능을 하나로 묶어 개발하는 방법 |
속도가 빠르다 | 코드의 재활용성이 높다 |
코드의 순서가 바뀌면 올바른 결과를 보장하기 어렵다 | 설계하는데 시간이 오래 걸린다 |
http://jameskim79.ipdisk.co.kr:8000/apps/wordpress/java-클래스-객체-인스턴스의-차이/
클래스 | 인스턴스 |
---|---|
어떤 문제를 해결하기 위한 데이터를 만들기 위해 추상화를 거쳐 | |
집단에 속하는 속성 & 행위를 → 변수 & 메소드로 정의한 것 | 클래스에서 정의한 것을 토대로 실제 메모리에 할당된 것 |
객체를 만들기 위한 메타 정보라고 볼 수 있다. | 실제 프로그램에서 사용되는 데이터 |
클래스는 설계도 | 객체는 설계도로 구현한 모든 대상 |
http://jameskim79.ipdisk.co.kr:8000/apps/wordpress/java-클래스-객체-인스턴스의-차이/
객체 | 인스턴스 |
---|---|
클래스의 타입으로 선언된 것 | 객체가 메모리에 할당되어 실제 사용되는 것 |
객체는 실체 에 초점을 둔다. | 인스턴스는 관계 에 초점을 둔다. |
Animal cat; | cat = new Animal(); |
// Animal 클래스의 객체를 메모리에 할당 |
https://limkydev.tistory.com/77 https://www.youtube.com/playlist?list=PLDV-cCQnUlIZcWXE4PrxJx6U3qKfRTJcK
SOLID 원칙은 클래스 자신안의 응집도는 내부적으로 높히고, 외부 클래스간의 결합도는 낮추는
High Cohesion - Loose Coupling 원칙
을 객체 지향 관점에서 도입한 것이다.