| English | 의미 |
|---|---|
| abstraction/əbˈstrækʃn/ | 추상화 |
| procedural abstraction/prəˈsiːdʒərəl əbˈstrækʃn/ | 절차 추상화 |
| method decomposition/ˈmeθəd ˌdiːkɒmpəˈzɪʃn/ | 메서드 분해 |
디테일 숨기기
- 추상화(abstraction) 는 주요 아이디어에 집중하기 위해 세부 사항(detailed information)을 숨기는 것을 의미합니다.
- 자동차를 운전할 때 엔진 내부 구조를 알 필요 없이 스티어링 휠과 페달만으로 조종한다.
- 코드에서 추상화는 어떻게 구현되었는지가 아니라 무엇을 하는지로 무언가를 사용할 수 있게 해준다.
- 이는 대규모 프로그램을 관리하기 위한 가장 중요한 개념이다.
절차적 추상화
- 절차적 추상화는 특정 동작을 메서드로 포장하여 이름으로 호출할 수 있게 한다.
- 한 번 작성되면
average(scores)은 그 결과값을 위해 사용되며 — 내부 코드는 숨겨져 있습니다. - 메서드 이름과 매개변수(인터페이스)만 알면 호출자가 필요한 모든 것을 알 수 있습니다.
- 이것이
Math.sqrt과 같은 라이브러리 메서드를 사용하는 정확한 방법입니다.
메서드 분해
- 큰 문제를 더 작은 기능으로 나누어 각 기능을 별도의 메서드로 만듭니다 — 이를 메서드 분해라고 합니다.
- "주문 처리" →
checkStock(),chargeCard(),ship()로 분리할 수 있습니다. - 작고 명확한 이름이 붙은 메서드는 작성, 테스트, 재사용하기 더 쉽습니다.
- 메인 메서드는 고수준 요약문처럼 읽히게 됩니다.
클래스 계획 수립
- 클래스를 설계하려면 해당 클래스가 어떤 데이터를 저장하고 어떤 기능을 제공하는지 결정해야 합니다.
Student는 데이터(이름, 점수)와 기능(addScore,average)을 모두 가집니다.- 좋은 설계는 관련 있는 데이터와 기능을 함께 묶습니다.
- 먼저 계획하면 프로그램을 구축하고, 읽고, 재사용하는 것이 더 쉬워집니다.
인터페이스还是实现?
추상화는 복잡한 how를 간단한 what 뒤에 숨깁니다. 각 항목을 정렬하십시오.
추상화는 구현이 아닌 인터페이스에 관한 것입니다. average(scores)의 호출자는 이름, 입력, 출력만 알면 되며 — 내부 루프는 전혀 알 필요 없습니다. 각 메서드가 명확하게 하나의 역할만 수행하도록 설계합니다(메서드 분해). 다섯 가지 서로 다른 일을 하는 메서드는 이름 붙이기, 테스트, 재사용이 어렵습니다. 코드를 쓰기 전에 클래스를 데이터 + 기능으로 계획하십시오.
Student 클래스 설계:
- 데이터: 학생의 이름과 점수 목록.
- 기능:
addScore(s),average(),highest(). - 호출자는
student.average()의 결과값을 위해使用该它 — 계산 과정은 내부에 숨겨져 있습니다.
추상화는 디테일을 숨겨 핵심 개념에 집중하게 하며, 절차 추상화는 메서드가 어떻게 작동하는지 모른 채에도 무엇을 하는지에 따라 사용할 수 있게 해줍니다. 메서드 분해는 큰 문제를 작고 명확한 기능으로 나눕니다. 클래스를 설계할 때는 데이터와 기능을 결정해야 합니다 — 좋은 설계는 코드를 쉽게 구축하고, 읽고, 재사용할 수 있게 합니다.
추상화를 가장 잘 설명하는 것은...
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
추상화는 작동 방식(how)을 숨겨 기능(what)을 사용할 수 있게 합니다.
절차 추상화는 ...을 통해 메서드를 사용할 수 있게 합니다.
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
내부 구조가 아닌, 이름과 입력을 통해 호출합니다.
큰 문제를 작은 명명된 행동(메서드)으로 나누는 것을 메서드 ___이라고 합니다 (단일 단어).
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
메서드 분해는 작업을 집중된 메서드로 나눕니다.
클래스를 설계할 때 무엇을 결정해야 하는가?
난이도 2/5 · 140 코인 + 오늘 첫 완료 시 소액 보너스
설계는 데이터 + 행동을 합리적으로 묶는 것입니다 — 주소가 아닙니다.
좋은 프로그램 설계는 프로그램을 쉽게 구축, 읽기, 재사용하게 합니다.
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
그것이 추상화와 분해의 보상이자 성과입니다.