[TIL] 20210803

열심히 사는 루피 🥰·2021년 8월 3일
0

1. OOP

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/

profile
반가워_! 세상아!

0개의 댓글