ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA]_7일차_05.05
    프로그래밍/Java 2021. 5. 5. 22:44

    Important


    자신이 바라는 모습을 계속 쓸 수록 점점 그 모습이 자신의 모습이 되어간다.

    What I don't know





    워커 홀릭이 되는 이유: 잘할수록 보상이 주어지기 때문 일이 힘든 이유: (기본적으로는) 직장에서 맡기는 일을 잘 못하기 때문

    다형성을 남용할 경우 치뤄야 하는 댓가

    • public method의 계약

    상속의 문제점

    • 상속 관계에서 특정 클래스에만 특정 메소드를 추가하고 싶을 때
      • 추상화함으로써 특정 메소드에서 오버라이딩
        • 하지만 문제는 해결되지 않음 (빈 메소드일지라도 메소드가 남아있다)
      • 특정 클래스에만 메소드를 추가하면 되지 않나?
        • 최악의 방법이다
        • 상위클래스 타입에서 접근할 수 없다 → 다형성을 잃어버리게 된다
        • 특정 메소드가 있다는 것을 외우고 있어야 한다 → 구조의 복잡성 증가

    인터페이스

    • 100% 추상 클래스
    • 객체를 만들 수 없다

    어떤 클래스를 하위클래스로 만들지, 추상 클래스로 만들지, 아니면 인터페이스로 만들지를 어떻게 결정 할 수 있을까요?

    • 클래스를 새로 만들려고 할 때 그 클래스가(Object를 제외한) 다른 어떤 유형에 대해서도 'A는 B다' 테스트를 통과할 수 없다면 그냥 클래스를 만듭니다.

    Dog d = new Dog(); 타입 / 레퍼런스 변수 / 키워드 / 생성자

    생성자

    • 생성자의 규칙
      • 클래스와 이름이 같아야 한다
      • 리턴 타입이 없어야 한다
    • 인스턴스를 생성할 때 실행되는 메소드이다.
    • 보통 필드의 값을 초기화 하려는 목적으로 사용한다
      • 오리 객체를 만들었는데 size가 0일 수는 없지 않은가
    • 오버로딩 해서 사용가능
    • 매개변수가 있는 생성자를 직접 만들면 ex. public Book(int author) { } 컴파일러에서 기본 생성자를 따로 만들어 주지 않는다

    하위 클래스에서 new를 하면 상위 클래스의 생성자도 작동한다?

    • 하위 클래스에서 new를 하면(객체를 만들면) 전체 상위 클래스들의 생성자가 작동하고 심지어 추상클래스의 생성자 조차 작동한다
    • 생성자의 작동 순서는 상위 클래스 → 하위 클래스 이다.
      • (부모 없이 자식이 있을 수 없기 때문)
    • super()을 사용해서 사용자가 직접 할 수 있다

     

    객체생성의 3가지 기적

    • 객체를 선언하고
    • 설계도로 하여금 생명체가 생긴다
    • 레퍼런스 변수 — 객체 간 연동이 된다

    super, this

    • super() : 상위 클래스의 생성자 실행
      • 사용 시, 부분의 가장 상단에 위치해야 한다. (부모 없이 자식이 있을 수 없기 때문)
    • super.xxx : 상위 클래스의 멤버(필드,메소드) 이용
    • this() : 현재 클래스의 생성자 실행
      • this.xxx의 중복 코드를 피하기 위해 this()로 현재 클래스의 생성자 호출(ThisIsJava.213p)
      • 특정 생성자로 몰아줄 수 있다
    • this.xxx : 현재 클래스의 멤버(필드,메소드) 이용

    null

    • 레퍼런스 변수에 사용 (ex. Dog a = null)
    • 연결을 해제
    • 아무것도 없는게 아니다. null을 의미하는 비트값이 들어있다

    Head First Design Patterns


    Strategy pattern

     

    전략 패턴 참고자료

    HomeWork

    • 여러 예제를 참고해, 나만의 예제로 만들어 제출
    • 패키지에 자신의 코드 넣기
    • 폴더에 자신의 클래스 다이어그램 보내기
    • export - 자신의 이름 - 카톡으로 전송

    디자인 원칙에서: 상속(Is-a)보다 (Has-a)를 더 선호한다

     

    예외 처리

    이것이 자바다 p.422

    에러의 종류

    • Logic Error
    • 일반 예외
    • 실행 예외(Runtime Exception)
      • Runtime Error: 이 예외를 try-catch로 잡아낸다

     

     

    예외처리 용어

    • throws
      • 무조건 써야하는 경우도 있고, 안써도 되는 경우도 있다!
      • 보통 File 전송 같은 경우에는 예외를 꼭 잡아야 됩니다
    • throw (...) : (...)오류를 발생시켜라!
    • try-catch-finally

    throws (예외내용) :

    • 메소드를 만드는사람이 어떤 오류가 발생할지를 넣어놓아야 사용하는사람이 try-catch에 그 오류내용을 집어넣는다

     

    try-catch (특정 오류가 발생하면 특정 행동을 취하는 것)

    try { 오류가 발생할 수 있는 부분 } catch (특정 오류) { 명시된 오류 발생하면 현재 부분 내용 실행 (ex. 오류가 발생하였습니다 출력) } finally { 무조건 실행되야 하는 부분 (오류발생해도, 오류없어도) } 좋은 예외 처리 코드 (상위 예외처리는 가장 아래 배치) try { } catch (특정 오류 코드) { } catch (특정 오류 코드) { } catch (Exception e) { //최상위 예외처리 } public void takeRisk() throws BadException {

    SOLID Design Principles

    [디자인패턴] SOLID 원칙

    댓글

Designed by Tistory.