제주 탈출 일지

패스트캠퍼스 챌린지 10일차 본문

패스트캠퍼스 챌린지!

패스트캠퍼스 챌린지 10일차

귀건 2021. 9. 15. 23:59
728x90
반응형

10일차 시작...

07. 여러가지 생성자를 정의하는 생성자 오버로딩 (overloading)

생성자를 여러가지 만들수 있다 -> overloading

오버로딩을 제공하는 이유 ? 사용자의 편의성을 위해. 사용하는 사용자가 필요한 생성자를 선택해서 사용해라..

무조건 많이 제공하는 것도 좋은것은 아니고 적당하게 생성하는 것이 좋다.

 

package ch07;

public class UserInfo {
	
	public String userId;
	public String userPassWord;
	public String userName;
	public String userAddress;
	public String phoneNumber;
	
	public UserInfo() {}
	
	public UserInfo(String userId, String userPassWord, String userName) {
		this.userId = userId;
		this.userPassWord = userPassWord;
		this.userName = userName;
	}
	
	public String showUserInfo() {
		return "고객님의 아이디는 " + userId + " 이고, 등록된 이름은 " + userName + " 입니다." ;
	}
}

 

package ch07;

public class UserInfoTest {

	public static void main(String[] args) {
		
		UserInfo userLee = new UserInfo();
		userLee.userId = "a12345";
		userLee.userPassWord = "zxcvbn12345";
		userLee.userName = "Lee";
		userLee.phoneNumber = "01034556688";
		userLee.userAddress = "Seoul, Korea";
		
		System.out.println(userLee.showUserInfo());
		
		UserInfo userKim = new UserInfo("b12345", "0987mnbvc", "Kim");
		System.out.println(userKim.showUserInfo());

	}

}

UserInfo 클래스를 만들고, UserInfoTest를 통해  인스턴스를 생성하여 연산자 오버로딩을 테스트 해본 예제.

 

08. 복습해봅시다 ( 객체 구현하기 )

클래스 이름은 최대한 General한 이름명으로 하는 것이 좋다.(예, Person)

 

1. 키가 180이고 몸무게가 78 킬로인 남성이 있습니다. 이름은 Tomas 이고, 나이는 37세입니다.

 

package ch08;

public class Person {
	
	public int personHeight;
	public int personWeight;
	public String personGender;
	public String personName;
	public int personAge;
	
	public Person() {
		
	}
	
	public Person(int personHeight, int personWeight, String personGender, String personName, int personAge) {
		this.personHeight = personHeight;
		this.personWeight = personWeight;
		this.personGender = personGender;
		this.personName = personName;
		this.personAge = personAge;
	}
	
	public String showPersonInfo() {
		return "키가 " + personHeight + "이고, 몸무게가 " + personWeight + "킬로인 " + personGender + "이 있습니다. 이름은 " + personName + " 이고, 나이는 " + personAge + " 입니다."; 
	}

}
package ch08;

public class PersonTest {

	public static void main(String[] args) {
		Person person_Tomas = new Person(180, 78, "남성", "Tomas", 37);
		System.out.println(person_Tomas.showPersonInfo());
	}

}

 

 

2. 음식점에 배달 주문이 들어왔습니다.

 

package ch08;

public class DeliveryService {
	
	public String deliveryAcceptNumber;
	public String deliveryPhoneNumber;
	public String deliveryAddress;
	public String deliveryDate;
	public String deliveryTime;
	public String deliveryPrice;
	public String deliveryMenuNumber;
	
	public DeliveryService () {
		
	}
	
	public DeliveryService (String deliveryAcceptNumber, String deliveryPhoneNumber,
			String deliveryAddress, String deliveryDate, String deliveryTime, String deliveryPrice,
			String deliveryMenuNumber) {
		
		this.deliveryAcceptNumber = deliveryAcceptNumber;
		this.deliveryAddress = deliveryAddress;
		this.deliveryDate = deliveryDate;
		this.deliveryMenuNumber = deliveryMenuNumber;
		this.deliveryPhoneNumber = deliveryPhoneNumber;
		this.deliveryPrice = deliveryPrice;
		this.deliveryTime = deliveryTime;
		
	}
	
	public void showDeliveryInfo() {
		System.out.println("주문 접수 번호 : " + deliveryAcceptNumber);
		System.out.println("주문 핸드폰 번호 : " + deliveryPhoneNumber);
		System.out.println("주문 집 주소 : " + deliveryAddress);
		System.out.println("주문 날짜 : " + deliveryDate);
		System.out.println("주문 시간 : " + deliveryTime);
		System.out.println("주문 가격 : " + deliveryPrice);
		System.out.println("메뉴 번호  : " + deliveryMenuNumber);
	}

}
package ch08;

public class DeliveryServiceTest {

	public static void main(String[] args) {
		
		DeliveryService first = new DeliveryService(
				"202011020003",
				"01023450001",
				"서울시 강남구 역삼동 111-3333",
				"20201102",
				"130258",
				"35000",
				"0003"
				);
		
		first.showDeliveryInfo();
		
	}

}

잘 나왔다.

복습 문제 2개 해-결. 이 코드까지 글자수로 쳐줘야 하는게 맞지 않을까... 코드 치는 것만 15분은 걸린듯...

 

09. 참조 자료형 변수

기본 자료형이외에 모든 변수는 String은 참조 자료형...

String은 예외) 참조 자료형을 사용할때는 해당 변수에 대해 생성을 해야 한다.

 

클래스 속성에 다른 속성이 모두 있으면 불합리하다.

예 ) 학생 클래스에 모든 과목에 대한 성적이 들어있다.. -> 학생과 과목 클래스로 분리함.

 

참조 자료형을 사용 할 경우 생성자에서 보통 생성을 한다.

 

예제.

package ch09;

public class Student {
	
	int studentId;
	String studentName;
	
	Subject korea;
	Subject math;
	
	Student(int studentId, String studentName) {
		this.studentId = studentId;
		this.studentName = studentName;
		
		korea = new Subject();
		math = new Subject();
	}
	
	public void setKoreaSubject( String name, int score) {
		korea.subjectName = name;
		korea.score = score;
	}
	
	public void setMathSubject( String name, int score) {
		
		math.subjectName = name;
		math.score = score;
	}
	
	public void showScoreInfo() {
		int total = korea.score + math.score;
		System.out.println( studentName + "학생의 총점은 " + total + "점 입니다.");
	}
}
package ch09;

public class Subject {
	
	String subjectName;
	int score;
	int subjectId;
}
package ch09;

public class SubjectTest {

	public static void main(String[] args) {
		
		Student studentLee = new Student(100, "Lee");
		studentLee.setKoreaSubject("국어", 100);
		studentLee.setMathSubject("수학", 99);
		
		Student studentKim = new Student(200, "Kim");
		studentKim.setKoreaSubject("국어", 65);
		studentKim.setMathSubject("수학", 50);
		
		
		studentLee.showScoreInfo();
		studentKim.showScoreInfo();
	}

}

학생 클래스에서 Subject라는 다른 클래스의 참조 자료형을 참조하여 사용하는 예제이다.  생성자에서 korea = new Subject(); 부분이 그러하다. 익숙해지면 좋을듯..

 

금일의 공부는 여기까지.

 

점점 코드가 많아지고, 관리하기 힘들어지는데 Github에서 관리할까 고민이 된다. 저장소를 하나 더 만들어서 관리를 할까.....?

Spring을 다루게 되면 그때는 관리를 해야할 거 같다. 

 

그럼 이만..

내일도 열공,

 

 

 

 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

https://bit.ly/37BpXiC

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

 

728x90
반응형
Comments