ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바 추상화 클래스와 날짜 계산
    자바 JAVA 2020. 7. 25. 18:35

    5.12 방법 추상화 및 단계적 개선

    소프트웨어 개발의 핵심은 추상화 개념을 적용하는 것이다.

    당신은 이 책에서 많은 수준의 추상화를 배울 것이다. 방법 추상화 달성

     

    방법의 사용과 구현을 분리함으로써. 클라이언트가 메소드를 사용할 수 있음

    어떻게 구현되는지 모르는 상태에서 구현에 대한 세부사항은 방법에 캡슐화되어 있으며, 방법을 호출하는 고객으로부터 숨겨져 있다. 이것 또한 그렇다.

     

    정보 숨기기 또는 캡슐화라고 알려져 있다. 만약 당신이 구현을 변경하기로 결정한다면, 당신이 방법을 변경하지 않는다면, 클라이언트 프로그램은 영향을 받지 않을 것이다.

     

    표식을 붙이다 방법의 구현은 블랙박스라고 하는 블랙박스에 클라이언트로부터 숨겨져 있다.

    그림 5.8에 표시된 바와 같이, 당신은 이미 System.out.print 방법을 사용하여 문자열과 최대값을 표시하였다.

     

    최대 수를 찾는 방법. 프로그램에서 이러한 메소드를 호출하기 위해 코드를 쓰는 방법은 알고 있지만, 이러한 메소드를 사용하는 사용자로서 어떻게 사용하는지 알 필요는 없다.

     

    시행되다

    방법 추상화의 개념은 프로그램 개발 과정에 적용될 수 있다.

    대형 프로그램을 작성할 때, 분업·컨커싱 전략을 사용할 수도 있다.

     

    단계적 정교화, 하위 문제로 분해하는 것. 하위 문제는 더 멀어질 수 있다.

    더 작고 다루기 쉬운 문제로 분해되는 것.

     

    지정된 달의 달력을 표시하는 프로그램을 작성한다고 가정합시다. The

    프로그램에서는 사용자에게 년도와 월을 입력하라는 메시지를 표시한 다음, 전체 달력을 표시한다.

    다음 샘플 런에서와 같이 월

     

    그림 5.8 방법 본문은 상세한 내용을 담고 있는 블랙박스로 생각할 수 있다.

    그 방법에 대한 시행

    비디오참고

    단계적 정교함

    분열하여 정복하다

     

    204 5장 방법

     

    전체 연도 입력(: 2012):

    월을 1에서 12 사이의 숫자로 입력하십시오.

     

    이 예제를 사용하여 분할 및 재무 접근 방식을 시연해 봅시다.

     

    5.12.1 하향식 설계

    그런 프로그램을 어떻게 시작하시겠습니까? 즉시 코딩을 시작하시겠습니까? 초보 프로그래머들은 종종 모든 세부사항에 대한 해결책을 강구하는 것으로 시작한다. 비록

    세부사항은 최종 프로그램에서 중요하며, 초기 단계의 세부사항에 대한 우려는 다음 사항을 차단할 수 있다.

     

    문제 해결 과정 문제 해결의 흐름을 최대한 원활하게 하기 위해, 이 예는 설계에서 세부 사항을 분리하기 위해 방법 추상화를 사용하는 것으로 시작하고 나중에 세부 사항을 이행하는 것으로 시작한다.

     

    이 예에서 문제는 먼저 두 가지 하위 문제로 나뉜다: 에서 입력 받기.

    사용자 및 해당 달의 달력을 인쇄하십시오. 이 단계에서는 무엇에 대해 관심을 가져야 한다.

    하위 문제는 달력을 어떻게 입력하여 인쇄하는 것이 아니라,

     

    . 문제의 분해를 시각화하는 데 도움이 되는 구조도를 그릴 수 있다.

    (그림 5.9a 참조).

     

    스캐너를 사용하여 년도와 월의 입력을 읽을 수 있다. 인쇄의 문제

    주어진 달의 달력은 두 개의 하위 문제로 나눌 수 있다: 달 제목 인쇄, 그리고

    월 본문을 그림 5.9b와 같이 인쇄한다. 월 제목은 세 개의 행으로 구성된다:

    그 해와 점선, 그리고 그 주의 칠일의 이름이다. 당신은 그 일을 해야 한다.

    숫자 월(: 1)의 월 이름(: 1) 이것은 에 있다.

     

    getMonthName(그림 5.10a 참조).

    월차 본문을 인쇄하기 위해서는 요일이 어느 요일인지 알아야 한다.

    (getStartDay) 및 월의 일 수(getNumberOfDaysInMonth)

     

    printCalendar

    ()

    (a) (b)

    readInput printMonthTitle printMonthBody

     

    인쇄 월

    그림 5.9 구조 차트는 printCalendar 문제가 두 개의 하위 문제인 readInput으로 나뉜다는 것을 보여준다.

    (a) 단위로 인쇄하고 해당 인쇄 월은 두 개의 작은 하위 문제인 printMonthTitle로 나뉜다.

    (b) 단위로 인쇄MonthBody

    5.12 방법 추상화 및 단계적 개선 205

    그림 5.10b와 같이. 예를 들어 20131231, 2013121일은

    일요일

     

    한 달 만에 첫 데이트의 시작일을 어떻게 얻으시겠습니까? 하는 방법은 여러 가지가 있다.

    그래서 일단은 다른 방법을 쓰도록 하겠다. 1월의 시작일을 알고 있다고 가정하자.

     

    1,1800은 수요일이었다(START_DAY_FOR_JAN_1_1800 = 3) 당신은 그것을 계산할 수 있다.

    180011일부터 첫 번째 날짜 사이의 총 일 수(NumberOfDays)

     

    달력의 달력 월의 시작 날짜는 (NumberOfDays +) 입니다.

    시작일 1800) % 7(매주 7일이므로). 따라서 getStartDay 문제는

     

    그림 5.11a와 같이 getTotalNumberOfDays로 더욱 세분화할 수 있다.

    총 일수를 얻으려면 한 해가 윤년인지, 한 해가 윤년인지 알 필요가 있다.

    댓글

Designed by Tistory.