일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 패캠
- 국비지원취업
- 미니 프로젝트
- 프론트엔드
- 깃
- 개인프로젝트
- 개발블로그
- 프로젝트
- 패스트캠퍼스부트캠프
- 딥러닝
- 프로그래머스 JS 코테
- Java
- pokeapi
- 깃허브
- 프론트엔드개발자
- 개발 프로젝트
- js코테
- 자바스크립트
- 프로그래머스코테
- 프론트엔드부트캠프
- 코딩테스트
- 부트캠프
- 국비지원
- 프로그래머스
- JS
- FE
- 패스트캠퍼스
- 자바스크립트 코딩테스트
- 영상처리
- 패캠부트캠프
- Today
- Total
가쟤의 해변일기 🐳
풀스택 과정 2주차 - Class DataType Array | MVC | 메소드 오버로딩 본문
지난주 클래스 타입 배열 활용하기, 생성자 오버로딩을 배웠을 때는 코드 실습이 많아서 블로그에 올리지 못했다.
서비스를 구조적으로 꼼꼼히 기획하고 구현하는 것을 3주차인 오늘 오전까지 했다.
이건 2주차 게시물 !
💡 2025 04 18 수업 이슈
1. Service 클래스 분리하기
2. 생성자 오버로딩
3. Class Type 배열 활용하기
Class DataType Array
- 선언
- 생성
- 초기화
동시에 하려면..
Account[] accounts = {new Account(1, 100), new Account(2, 300)… };
vo → value object 정보만 저장하는 객체
test 클래스 빼고 다 VO다.
test는 클라이언트 역할을 함 → 값 입력 받고 호출하는 데이터만 받아서 출력해야 한다.
확장성 있는 코드가 아니다 !
—> 기능만 모아둔 클래스 : 서비스 클래스, 매니저 클래스, 등등…
(SE) Test 클래스는
1. Scanner로 값 입력
2. 함수 호출(서비스 요청)
3. 반환값 출력
위 세 가지만 작업해야 한다.
Test 클래스에서 로직이 돌아가면 안 된다 !
→ 기능만을 모아놓은 서비스 클래스를 추가적으로 작성해야 한다.
✅ (SE)
vo — service — test
✅ (EE)
Model — Controll —View
MVC 구조
has a 관계가 어떻게 되는지 중점적으로 보기.
그리고 메소드명(identifier)을 일관성 있게, 단수/복수형 유의해서 직관적으로 잘 작성해야 한다.
메소드는 동사를 앞에 붙이기 !
반환 받을 때 : getXXX
검색 : findXXX, searchXXX
public Customer findCustomer(Customer[] custs, int ssn) {
public Customer findCustomer(Customer[] custs, String addr) {
❌ public String findCustomer(Customer[] custs, String name) {
함수명이 같다 == 같은 기능 !
but 처리하는 파라미터, 데이터가 달라진다.
= Method Overloading !!
기능은 같지만 인자값이 조금씩 다르다.
return 타입은 다를 수 있다.
파라미터 가 Customer[] custs, String addr랑 Customer[] custs, String name 으로 값이 다르지만,
컴퓨터는 Customer[], String으로 같은 파라미터로 인식해서 사용할 수 없다!
/*
* Method Overloading Rule (규칙, 문법)
* 1. 메소드 이름은 반드시 같아야 한다.
* 2. 메소드 인자값은 반드시 달라야 한다.
* (순서, 갯수, 타입 중 하나라도 달라야 한다.)
* 3. 메소드 리턴 타입은 상관 없다.
*/
// 3. Outlet 안에 있는 고객들 중에서 특정 고객을 검색하는 기능
public Customer searchCustomer(Customer[] customers, int ssn) {
return null;
}
// 4. Outlet 안에 있는 고객들 중에서 "혜화동"에 거주하는 고객을 검색하는 기능
public Customer[] searchCustomer(Customer[] customers, String address) {
return null;
}
package com.edu.service;
import com.edu.vo.Customer;
import com.edu.vo.Product;
// 아울렛에서 상품들을 구매하는 고객 관련 기능들만 모아놓은 서비스 클래스
// 데이터베이스와 연결되면 이후에 이 클래스는 DAO(Database Access Object)
// vo, test클래스 중간에 위치하므로 해당 클래스는 Controller 역할을 여기서 한다.
/*
* 1. 서비스의 기능들을 주석으로 먼저 달아둔다.
* 2. 모든 기능의 선언부만 먼저 작성한다.
* 메소드 이름, 인자값, 반환 타입
* 인자값과 반환 타입은 반드시 정확해야 한다.
*
* 3. 메소드를 하나만 먼저 구현
* 4. 테스트에서 호출해서 작성이 잘 되었는지 확인...
* 다음 메소드 작성으로 넘어가 반복한다. (test에서 호출, 확인)
*/
public class OutletCustomerService {
// 1. 특정 고객이 구매한 모든 상품을 반환하는 기능
public Product[] getProducts(Customer customer) {
return null;
}
// 2. 특정 고객이 구매한 모든 상품의 메이커만 반환하는 기능
public String[] getProductsMaker(Customer customer) {
return null;
}
/*
* Method Overloading Rule (규칙, 문법)
* 1. 메소드 이름은 반드시 같아야 한다.
* 2. 메소드 인자값은 반드시 달라야 한다.
* (순서, 갯수, 타입 중 하나라도 달라야 한다.)
* 3. 메소드 리턴 타입은 상관 없다.
*
* 하는 일이 같지만(메소드 이름이 같다) 처리하는 데이터를 달리하는 기법
* 결론적으로 코드의 가독성을 높이는데 중요한 역할을 하는 기법
*/
// 3. Outlet 안에 있는 고객들 중에서 특정 고객을 검색하는 기능
public Customer searchCustomer(Customer[] customers, int ssn) {
return null;
}
// 4. Outlet 안에 있는 고객들 중에서 "혜화동"에 거주하는 고객을 검색하는 기능
public Customer[] searchCustomer(Customer[] customers, String address) {
return null;
}
// 5. 특정 고객이 구입한 물건 중에서 최고가에 해당하는 물건의 가격을 반환
public int getMaxPrice(Customer customer) {
return 0;
}
// 6. 모든 고객이 구입한 물건 중에서 특정 가격 이상 되는 상품을 반환
public Product getProductOverPrice(Customer[] customer, int minPrice) {
return null;
}
}
Method Overloading Rule (규칙, 문법)
- 메소드 이름은 반드시 같아야 한다.
- 메소드 인자값은 반드시 달라야 한다. (순서, 갯수, 타입 중 하나라도 달라야 한다.)
- 메소드 리턴 타입은 상관 없다.
하는 일이 같지만(메소드 이름이 같다) 처리하는 데이터를 달리하는 기법
- 결론적으로 코드의 가독성을 높이는데 중요한 역할을 하는 기법
Java Application 작업 시 어떤 순서로 클래스를 구현해야 하는가?
- 어떤 것을 만들까?
- 어떤 vo 들이 필요할까?
- vo 들의 관계는 어떤 관계인가?
- Service 클래스의 메소드 선언부만 먼저 정의
- 메소드를 하나씩 구현 → test에서 하나씩 호출 → 하나씩 성공 여부 확인
'풀스택과정' 카테고리의 다른 글
풀스택과정 3주차 - CRUD | 상속 (0) | 2025.04.23 |
---|---|
풀스택과정 3주차 - 생성자 오버로딩 | MVC 구조 코드 작성 | 서비스 클래스와 싱글톤 (1) | 2025.04.21 |
풀스택과정 2주차 - JavaDoc | Array | 가위바위보 리팩토링 팀작업 (2) | 2025.04.16 |
풀스택과정 2주차 - 조건문 | 반복문 | Encapsulation (1) | 2025.04.15 |
풀스택 과정 2주차 - Scanner | 가비지컬렉션 | Short Circuit (2) | 2025.04.14 |