1) 객체지향?
2) 객체지향 특성
캡슐화(기능의 완전함, 정보은닉)
남한테 내 심장을 보여줄 순 없다... -> 외부 침략을 제한해야한다.
friendly : 패키지 내 접근. (패키지 안에서만 접근가능, 외부패키지에선 볼 수 없게!)
상속과 추상화
의미적 추상
추상기능을 가진 추상체(abstract 메소드를 상속)
객체자체가 추상(interface)
다형성 : 형을 여러개로 표현가능
interface Login{
void login();
}
interface SystemCheck{
void dataCheck();
}
static class SystemDevCourse implements Login, SystemCheck{
@Override
public void login() {
System.out.println("just Login");
}
@Override
public void dataCheck() {
System.out.println("data base check");
}
}
public static void main(String[] args) {
//login 으로 접근하면 login 기능만 제공
Login login = new SystemDevCourse();
login.login();
//systemCheck로 접근하면 datacheck 기능 제공
SystemCheck systemCheck = new SystemDevCourse();
systemCheck.dataCheck();
//캡슐화를 위해서, 권한을 가진 부분만 자식에게 추상된 형태로 제공 받을 수 있음
//같은 객체지만, 누가 접근하냐에 따라 필터링된 기능을 제공
//SystemDevCourse는 로그인도 있고, 시스템체크도 있지만
//시스템 체크에겐 데이터 확인 기능만, 로그인에겐 로그인 기능만 제공한다.
}
상속은 어렵다.🙄
3) 객체지향 설계
UML!! 약간의 학습이 더 필요할 것 같다.
아직 상속 등의 관계를 많이 사용해보지 않아서 플젝때 꼭 활용해보기.
https://draw.io
디자인 패턴
https://refactoring.guru/