2017. 8. 28 - pobi

2017. 8. 28 - pobi 강의

앞으로의 학습 방향

  • 월 - 상속
  • 수 - Exception(예외처리), lotto game -> web, Chess game -> web
  • 금 - 쓰레드, 프로세서
  • 월 - Ajax
  • 수 - Summary(요약)
  • 금 - 쉘 스크립트를 이용한 자동화

질문

  • NIO를 학습할려면 어떤 책이 좋은가?
    • 작은 서버를 구현하면서 공부해봐라(국내에 책이 몇권 없다..)
  • 설계할때 인터페이스를 구현해서 강제로 구현할 것을 정한다. 인터페이스를 구현한 클래스를 상속한 클래스는 인터페이스의 기능이 필수적이지 않을수 있지않은가?
    • 클래스를 만들기전 클래스들의 상속구조를 먼저 설계 해 놓고 코딩을 해야하지만 현실을 그게 잘 안된다. 그래서 상속할때는 신중히 해야한다.
  • 상속과 인터페이스의 차이점은 상속은 부모클래스에서 이미 메소드를 구현이 되어잇어서 자식클래스에서 그대로 사용할 수 있지만 인터페이스는 구현부가 없기때문에 상속 받는 클래스에서 구현해야한다.

  • 부모클래스에 메소드가 protected 는 어떤 기능을 가지고 있는가?
    • 접근제어자의 차이
    • private - 클래스 내에서만.
    • default or package - 같은 패키지 내에서만.
    • protected - 상속 받은 클래스(상속을 받으면 다른패키지에서 사용가능)
    • public - all
    • 접근성은 위가 가장 낮고 아래로 갈수록 넓어 진다.
  • 인터페이스와 상속을 언제 써야하는가?
    • 인터페이스는 프로그래밍의 명세를 만드는 것(이 명세를 따라야한다 - 표준)
    • 명세를 설계하는 것은 프로그래밍을 틀을 잡는 것.
  • 회사 면접에서 회사에 대해 질문하라 할때 회사를 알아보기 위한 질문
    • 가장 낮은 수준의 회사 (git, svn을 쓰지않는 회사) - 가지마라.
    • CI(지속적 통합 툴) - 약간 개발문화가 있는 곳.
    • test 유무 ( Junit을 활용한 단위 테스트 ) - 하는게 쉽지않다.
    • 코드리뷰를 하는가?
  • CI(Continuous Integration) - 지속적인 통합 이란 무엇인가?
    • 버전관리시스템에 코드를 푸쉬 해 놓으면, 코드의 변경사항을 체크하고있다가 변경사항이 생기면 자동으로 소스코드를 풀을 한다음에 빌드를 하고 테스트를 한 다음에 모든 테스트를 패스를 한 다음에 배포까지 해주는 프로그램
    • 빌드나 테스트를 하다가 오류가 생기면 메신져로 알림을 준다.

상속

커피 전문점 예제

추상화

  • 실제 프로그래밍을 할때 완전 똑같은 코드부분이 같은 일은 잘 발생하지 않는다.
  • 그래서 한단계 더 들어가서 중복부분을 추상화 할 수 있는 법을 알아야한다.
  • 서로 다른 요구사항을 파악하면서 그 중 공통된 부분을 추출할 수 있는 능력이 필요하다.
  • 공통된 부분을 추상화 하다보면 메소드가 중복되는 부분이 발생한다.

abstract

  • 구현된 클래스에서 일부분은 구현되지 않은 메서드를 만들 때 사용한다.
  • 구현되지 않은 메서드는 자식 클래스에서 반드시 구현해야한다(강제)
  • abstract를 선언한 메서드는 자식클래스에서 반드시 생성해야하므로 부모클래스에서 사용할 수 있다.
  • 부모클래스의 메서드를 설계할때 처음에 잘 설계하지않고 나중에 수정부분이 발생하면 부모, 자식 모두에서 오류가 발생한다.
  • abstract 를 쓸려면 인터페이스를 많이 추출하면 인터페이스에서도 중복되는 부분이 발생하는데 이때 중복되는 부분을 추상화 할려면 abstract를 사용하여야 한다.

부모클래스에서 인터페이스를 implements 하면 Override되는 부분은 자식에서 구현해도 된다.

프로그래밍에서 중복코드를 제거하는 방법

  1. method를 통한 중복 제거 (클래스 내에서 생긴 중복)
  2. 클래스 간의 중복 제거
    • 상속 - 새로운 클래스를 생성.
    • Composition(조합) - 새로운 클래스를 생성.

upcasting vs downcasting

Object 클래스

  • 모든 클래스들의 부모
  • 일반 클래스에서 클래스의 객체를 System.out.println을 호출하면 클래스안의 toString() 메서드를 호출하게 된다. 하지만 클래스 내에 toString()메서드가 없으면 Object클래스의 toString을 호출해서 클래스명과 주소값이 나오게 된다.
  • Object 클래스에서 hashCode, equals, toString의 기능을 제대로 이해하자.

Enum 클래스의 equals 와 Object 클래스의 equals의 차이점

  • Enum클래스의 equals는 리턴값에 final이 붙어 있고 Object 클래스는 final이 없다.
  • 둘의 차이점은 비교의 관점이다. Enum 클래스는 선언될때 상수값으로 선언되기때문에 그저 주소값만을 비교하면 된다. 하지만 클래스는 값과 주소가 다를 수 있기 때문에 final이 붙어있지않다.

TDD

  • 테스트 코드를 먼저 작성하고 프로덕션 코드를 작성
  • 테스트 코드가 통과하면 빨간줄이 뜨기전까지는 절대 프로덕션코드를 수정하지 않는다.
  • In Out 방식 (안에서 밖으로 코딩) EX) 체스게임에서 피스부터 시작해서 보드로 나오는 것.
  • Out In 방식 (밖에서 안으로 코딩) EX) 체스게임에서 보드부터 시작해서 피스로 들어가는 것.
  • 처음에는 Out In 방식이 테스트 하기 쉽다.

로또게임 TDD 형식으로 구현해보기

  • 테스트 코드 먼저 작성
  • 테스트를 통과하는 프로덕션 코드 작성
  • 코드 리펙토링시 테스트코드는 수정이 되면안된다. 하지만 클래스 분할을 할때 빨간줄이 발생…

jekyll을 이용한 블로그 구축 공부

Comments