객체지향적으로 설계
undefined undefined
객체지향적으로 설계

"객체 지향적으로 설계"와 "서술적으로 설계"에서는

오라클에서 공식적으로 보여주는 튜토리얼입니다.

우리는 앞으로 이러한 설계방식을 따라야 하며

본문에서는 상황에 맞게 조금 각색했습니다.

원문(https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html)을 참고하여 같이 보면 좋습니다.

저는 이 예제를 보았을 때 자바의 우아함에 또 한 번 놀랐습니다.

난잡함 없이 제너릭스를 구현하는 기교나 자바만의 우직한 철학에 감동하였습니다.

다음 본문부터는 하나의 가상시나리오로 기술합니다.

아마도 이 강의에서 가장 철학적인 부분이 될 것 같군요.


프로그래밍 인생을 잠시 내려놓고

오로지 하나만을 추구하는 자바의 우아함을 받아들여 한 단계 성장하는 시간을 갖도록 합시다.


Person 객체를 정렬하는 단순한 프로그램을 Object-oriented Paradigm으로 설계하고자 합니다.

실행 언어: java
실행 결과를 확인해보세요!

몇 개의 필드와 of 메소드를 가지고 있는 Person 클래스를 선언했습니다.

printOrderThan 메소드로 List에 있는 Person 중 age 필드가 14 이상인 Person을 출력하게 했습니다.

실행 언어: java

이제 개발 스펙은 변경되었고

기존 printOrderThan 메소드는 printBetweenAge로 변경됐습니다.

실행 언어: java
printBetweenAge의 내용은 Person 객체의 age 필드가 12와 19 사이인 객체를 출력하는 형태입니다.
실행 언어: java
실행 결과를 확인해보세요!

최종 변경사항입니다.

하지만 개발 스펙은 다시 바뀌고 필터를 추가해야 하는 상황이 됐습니다.

실행 언어: java
실행 언어: java

특정 나이 사이에 있고, 특정 Family Name을 가지고 있는 Person 객체를 추출하는 필터와

특정 글자가 이름에 포함되어 있으면 Person 객체를 추출하는 필터가 추가되었습니다.

실행 언어: java
계속되는 필터 요구에 따라 인터페이스를 만들고 위임하는 형태로 구성하고자 합니다.
실행 언어: java
추후의 재사용성을 위해 CheckPersonWithAge라는 클래스를 만들고 PersonChecker를 implement 하였습니다.
실행 언어: java
기존에 있던 필터메소드를 printCheckPerson으로 명명
인터페이스 객체를 받을 수 있게 명명했습니다.
실행 언어: java
메소드를 호출할 때 CheckPersonWithAge의 객체를 생성하여 넘겨주었습니다.
실행 언어: java

이후 스펙에 따라 PersonChecker를 implement 하는 클래스를 매번 정의하는 것은

유연성이 없다고 판단, Anonymous class 형태로 호출하게 됩니다.

실행 언어: java
실행 결과를 확인해보세요!
여기까지가 객체 지향적으로 설계한 소스입니다.
질문하기
추가 자료
no files uploaded

추가 자료가 없습니다

여기서 새로운 학습 자료를 확인하세요!
선생님이 추가한 자료들을 바로 확인할 수 있어요.