OOP: Object Oriented
CBD: 부품 객체를 먼저 만들고 이것들을 하나씩 조립해 완성된 프로그램을 만드는 기법
추가)
절차지향: C
객체지향: C++, JAVA
관점지향: 개념
물리적으로 존재하는 것 (예: 자동차, 책, 사람)
추상적인 것 (예: 회사, 날짜) 중에서 자신의 속성돠 동작을 가지는 모든 것
객체는 필드(속성)와 메소드(동작)로 구성된 자바 객체로 모델링 가능
객체 지향 프로그램에서는 객체는 다른 객체와 관계를 맺는다
관계의 종류
(집합 관계: 완성품과 부품의 관계)
(사용 관계: 객체가 객체를 사용하는 관계)
(상속 관계: 종류 객체와 구체적인 사물 객체 관계)
데이터 구조와 데이터를 다루는 방법들을 결합 시켜 묶는 것
객체의 필드, 메소드를 하나로 묶고, 실제 구현 내용을 감추는 것
외부 객체는 객체 내부 구조를 알지 못하며 객체가 노출해 제공하는 필드와 메소드만 이용 가능
필드와 메소드를 캠슐화하여 보호하는 이유는 외부의 잘못된 사용으로 인해 객체가 손상되지 않도록
자바 언어는 캡슐화된 멤버를 노출시킬 것인지 숨길 것인지 결정하기 위해 접근 제한자(Access Modifier) 사용
상위 개념의 특징을 하위 개념이 물려 받는 것
상위(부모) 객체의 필드와 메소드를 하위(자식) 객체에게 물려주는 행위
하위 객체는 상위 객체를 확장해서 추가적인 필드와 메소드를 가질 수 있음
상속 대상: 필드와 메소드
상속의 효과
(상위 객체를 재상용해서 하위 객체를 빨리 개발가능/ 반복된 코드의 중복을 줄임/ 유지 보수의 편리성 제공/ 객체의 다형성 구현)
부모클래스에서 물려받은 가상 함수를 자식 클래스 내에서 오버라이딩 되어 사용되는 것
같은 타입이지만 실행 결과가 다양한 객체를 대입할 수 있는 성질
(부모 타입에는 모든 자식 객체가 대입/인터페이스 타입에는 모든 구현 객체가 대입)
효과
(부품화시키는 것 가능 / 유지보수 용이)
공통의 속성이나 기능을 묶어 이름을 붙이는 것
사전적 의미: 여러가지 사물이나 개념에서 공통되는 특성이나 속성 따위를 추출하여 파악하는 적용
클래스에는 객체를 생성하기 위한 필드와 메소드가 정의되어 있다.
클래스로부터 만들어진 객체를 해당 클래스의 인스턴스(instance) 라고 한다.
하나의 클래스로부터 여러 개의 인스턴스를 만들 수 있다.