추상화(Abstraction)
공통의 속성이나 기능을 묶어 이름을 붙이는 것을 추상화라고 할 수 있다.
객체 지향적 관점에서 클래스를 정의하는 것을 추상화라고 할 수 있다. 예를 들어 사자, 고양이, 강아지가 있을 때 우리는 이것을 각각 객체라고 하며, 이 객체들의 공통점인 동물이라고 표현할 수 있는데 이때 동물로 묶는 행위를 추상화라고 한다.
제어 추상화
어떤 클래스의 메소드를 사용하는 사용자에게 해당 메소드의 작동방식과 같은 내부 로직을 숨기는 것
핵심은 프로그래밍을 빠르게 설계하고 구현
하기 위한 방법
생산성 증가, 가독성 증가, 에러 감소, 유지 보수시 시간단축
데이터 추상화
대상을 간단한 개념으로 일반화 하는 과정
캡슐화(encapsulation)
변수나 메소드들을 캡슐로 감싸서 안보이게 하는 정보 은닉 개념중 하나
이다.
예시로는 알약을 들 수 있으며, 알약의 실제 약 내용은 가루약이지만, 이것을 캡슐로 감싸면서 맛을 은닉하여 사람이 먹기 편하게 하였으며, 또한 복잡한 재료들의 배합을 캡슐로 포장하여 다루기 편하게 하였다.
이처럼 캡슐화는 객체의 속성(field)와 행위(Method)를 하나로 묶고, 외부로 부터
내부를 감싸 숨겨 은닉
한다. 또한
외부의 잘못된 접근으로 값이 변하는 의도치 않는 동작을 방지하는 보호 효과
도 누릴 수 있다.
자바에서는 대표적으로 protected, default, private의 접근제어자를 통해 구현이 가능하다.
상속(inheritance)
객체들 간의 관계를 구축하는 방법
상위 클래스의 속성(변수)와 기능(메소드)를 재사용하여(상속) 하위 클래스가
전부
물려받는 것을 말한다.
상속되는 클래스는
super/parent
클래스라 부르고 새롭게 생성된 클래스를
sub/child
클래스라 불리운다