2017. 8. 23 - pobi

2017. 8. 23 - 포비 강의

변화는 어떻게 만들어 갈 것인가?

작은 성공(small success)

  • 작은 성공 경험을 통해 성취감과 안정감을 느끼도록 한다.
  • 더 큰 변화에 적응할 수 있도록 한다.

  • 회고 -> Practice 선택 -> 한 가지에 집중 -> 작은 성공 -> 행복

회고

  • 하루에 한번은 아니더라도 일주일에 한번을 자기가 무엇을 했는지 돌아보는 시간을 가지자.
  • 너무 긍정적으로, 너무 부정적으로 생각하지 말자. 그냥 있는 그대로 한 일을 돌아보고 무엇을 선택해야하는지 고민해보자.

인터페이스(interface)

if else 가 나쁜 것은 아니다. 필요한 경우에는 써야한다.
하지만 if문안에 10줄이상이 넘어가면 한번쯤 의심해봐야한다. (다형성을 사용하고 있는가?)
인터페이스를 잘 사용하면 if else for문 없이 사용할 수 있다.
반복문을 없앨려면 재귀를 잘 사용해야한다.

인터페이스 하면 생각 나는 것. - UI(사용자 인터페이스) 등등 사람과의 접점에 있는 것.

실생활의 인터페이스 - 멀티플러그
규격이 있다. - 규격이 안맞으면 사용할 수 없다.
그래도 사용하고 싶으면 중간에 어댑터를 이용해서 규격에 맞게 변경해서 사용해야 한다.
대표적인 예로는 JDBC(Java Database Connective)가 있다.

인터페이스에서 구현부분은 하나도 없다. JDBC에서 구현부분은 각 데이터베이스 회사에서 만든 클래스안에 있다.

인터페이스를 써야하는 포인트

A라는 클래스에 a라는 메서드가 있고, B라는 클래스에 b라는 메소드가 있다. a와 b에서 일부분이 차이가 일어날때 (메소드에서 일부분만 차이가 발생 할 때) 인터페이스를 사용한다

Enum

클래스처럼 별도의 파일을 만들 수도 있고, 클래스안에 포함 될 수 도 있다.
public과 같은 접근 제어자를 선언하면 상수와 똑같은 취급이 가능하다.
enum은 상수값이라서 equals로 비교하는 것이 아닌 비교연산자(==)로 비교가 된다. enum은 static을 안줘도 내부적으로 딱 1가지만 생성 되기 때문에 static final 취급이 된다.

폴리모피즘(polymorphism, 다형성)

인터페이스를 통한 다형성. 공통된 기능이 있지만 구현체가 달라야 할 경우 인터페이스로 추출하여 메서드를 선언한 후
그 인터페이스를 구현하는 클래스들을 만들어 목적에 맞게 기능을 구현한 후 로직상에서는 인터페이스로 메서드를 동작 시키고
타입에 맞는 클래스를 생성자로 넣어서 작동하게 한다. 클래스 내부의 ArrayList나 객체들을 밖으로 노출해야 할때는 그 객체의 인터페이스 형을 노출시키는게 안전하다.
EX) return ArrayList (x), return List (o)
인터페이스형으로 리턴형을 잡으면 내부 인스턴스가 바뀌더라도 같은 인터페이스를 구현하고 있으면 다른부분에 영향을 미치지않고 내용 변경이 가능하다.

Set은 순서가 보장 되지 않는다.

Set에서 add가 일어날 때 메모리상에서 0,1,2 순서대로 들어가지않고 랜덤하게 들어가서 순서가 보장되지 않는다고 한다. 비교자료

학습용 자바 코드(조사해보자!)

Junit 라이브러리 1.0 ~ 4.0 1.0부터 분석해보는 것이 좋다.
아파치 커몬스 라이브러리
자바 컬랙션 구아바 라이브러리

Comments