개념적인 용어 : 객체
기술적인 용어 : class, instance
객체는 작은 기능을 수행하며 서로 협력한다.
객체는 type으로 구분한다. type은 class로 만들 수 있다.
implements Runnable
class MyObject extends Object implements Runnable {
}
객체는 스스로 동작할 수 있어야 한다. 외부에 의존하거나 외부의 침략을 제한해야한다.
완성도
기능을 수행하는 단위로써 완전함을 가진다.
정보 은닉
밖에서 객체 내의 저옵를 접근하지 못하도록 한다.
접근지정자
private
객체 소유
protected
상속된 객체에서도 접근 가능
(friendly)
같은 패키지 내에서 접근 가능(패키지 가능성, 패키지 내에서만 특정 객체의 접근을 허용하는 경우)
public
누구든지 접근 가능
class NaverLogin implements Login, Portal {...}
Login login = new NaverLogin();
login.login();
Portal portal = new NaverLogin();
portal.portal();
Login → login() O, portal() X
Portal → login() X, protal() O
객체지향 설계를 설명하기 위한 도구
원칙에 따라 설계하니 공통점이 보이내 → 23가지 디자인 패턴