: 맀κ°λ³μ, Overloading(μ€λ²λ‘λ©), this
: μμ±μλ λ©μλ νΈμΆ μ ()μμ μμ±λμ΄ μ λ¬λμ΄μ§λ κ°μ μ μ₯νλ λ³μ
-> μ λ¬λ°μ κ°μ μ μ₯νκ³ μλ 맀κ°μ²΄ μν μ λ³μ
: ν΄λμ€ λ΄μ λμΌν μ΄λ¦μ λ©μλ(μμ±μ ν¬ν¨)λ₯Ό μ¬λ¬κ° μμ±νλ κΈ°λ²
: μλ°λ κΈ°λ³Έμ μΌλ‘ νλλͺ
, μμ±μλͺ
, λ©μλλͺ
, λ³μλͺ
μ μ€λ³΅μ νμ©νμ§μμΌλ
-> νλμ μ΄λ¦μΌλ‘ μ¬λ¬ κΈ°λ₯μ μνν μ μκ² νλ κ²
: [μ€λ²λ‘λ© μ‘°κ±΄]
1) λ©μλμ μ΄λ¦μ΄ λμΌν΄μΌνλ€
2) 맀κ°λ³μμ κ°μ, νμ
, μμ μ€ 1κ°λΌλ λ¬λΌμΌν¨. (λ³μλͺ
μ μ ν μκ΄μ΄ μμ)
// public User() { } // κΈ°λ³Έ μμ±μκ° μ΄λ―Έ μμ±λμ΄μμ΄μ μ€λ³΅
public User(String userId) {} // 맀κ°λ³μμ κ°μκ° κ°μ μμ±μκ° μμ΄ μ€λ²λ‘λ© μ±λ¦½
public User(int userAge) {} // 맀κ°λ³μμ κ°μκ° κ°μ§λ§, νμ
μ΄ λ€λ¦. μ€λ²λ‘λ© μ±λ¦½
public User(String userId, int userAge) {} // 맀κ°λ³μμ κ°μκ° κ°μ§λ§, νκ°μ νμ
μ΄ λ€λ¦. μ€λ²λ‘λ© μ±λ¦½
public User(int userAge, String userId) {} // 맀κ°λ³μμ κ°μ, νμ
μ΄ λͺ¨λ λμΌνμ§λ§ μμκ° λ€λ¦. μ€λ²λ‘λ© μ±λ¦½
//public User(int userAge, String userName) {} // 맀κ°λ³μμ κ°―μμ, νμ
, μμκ° λͺ¨λ κ°μ μ€λ²λ‘λ© λΆκ°. λ³μλͺ
μ μ κ²½μ°μ§μλλ€.
: 맀κ°λ³μλ‘ μ λ¬λ°μ κ°μ νλμ μ΄κΈ°ννλ κ²
: κ°μ²΄κ° μκΈ° μμ μ μ°Έμ‘°ν μ μλλ‘ νλ λ³μ
: λͺ¨λ κ°μ²΄μ λ΄λΆμ thisκ° μ¨κ²¨μ Έμλ€.
: μ μ¬μ©νλκ°?
-> νλλͺ
κ³Ό 맀κ°λ³μλͺ
μ΄ κ°μ κ²½μ° μ΄λ₯Ό ꡬλΆνκΈ° μν΄μ μ¬μ©νλ€.
: κ°μ ν΄λμ€μ λ€λ₯Έ μμ±μλ₯Ό νΈμΆν λ μ¬μ©
: μμ±μ λ΄μμ λ°λμ 첫λ²μ§Έ μ€μ μμ±λμ΄μΌνλ€. μμ λ€λ₯Έ μ½λμ°λ©΄ μλ¬
"Constructor call must be the first statement in a constructor"
: μ μ¬μ©νλκ°?
-> μ€λ³΅ μ½λ μ κ±°, μ½λ κΈΈμ΄ κ°μ, μ¬μ¬μ©μ± μ¦κ°
-> κ·Έλ¬λ κ°λ
μ±μ΄ μ’ μ΄λ €μ΄ κ²½μ°κ° μκΈΈ μμμ΄ λ§μ΄ μ¬μ©λμ§λ μμ
public void ex3() {
// μμ±μ νμΈ ν
μ€νΈ
// Student κ°μ²΄λ₯Ό κΈ°λ³Έ μμ±μλ₯Ό μ΄μ©ν΄ μμ±νκ³ μ΄λ₯Ό μ°Έμ‘°νλ μ°Έμ‘°λ³μ s1μ λμ
ν κ²
Student s1 = new Student();
// κΈ°λ³Έ μμ±μ
// User κΈ°λ³Έ μμ±μλ₯Ό μ΄μ©ν΄μ κ°μ²΄ μμ±
User u1 = new User();
// User κ°μ²΄ νλ μ΄κΈ°ν νμΈ
System.out.println(u1.getUserId());
System.out.println(u1.getUserPw());
System.out.println(u1.getUserName());
System.out.println(u1.getUserAge());
System.out.println(u1.getUserGender());
User u2 = new User();
System.out.println(u2.getUserId());
System.out.println(u2.getUserPw());
System.out.println(u2.getUserName());
System.out.println(u2.getUserAge());
System.out.println(u2.getUserGender());
// λ¬Έμ μ : u1μ΄ μ°Έμ‘°νκ³ μλ Userκ°μ²΄μ
// U2κ° μ°Έμ‘°νκ³ μλ Userκ°μ²΄μ νλ κ°μ΄ λͺ¨λ λμΌν¨
// μ? κ°μ κΈ°λ³Έ μμ±μλ‘ User κ°μ²΄λ₯Ό μμ±νκΈ° λλ¬Έμ
System.out.println("--------------------------------------");
// ν΄κ²°λ°©λ² 1 : setterλ₯Ό μ΄μ©ν΄μ μλ‘μ΄ κ° λμ
u2.setUserId("sefefs");
u2.setUserPw("sdfwefsefwef");
u2.setUserName("κΉμν¬");
u2.setUserAge(19);
u2.setUserGender('μ¬');
System.out.println(u2.getUserId());
System.out.println(u2.getUserPw());
System.out.println(u2.getUserName());
System.out.println(u2.getUserAge());
System.out.println(u2.getUserGender());
//ν΄κ²°λ°©λ² 2 : 맀κ°λ³μ μμ±μλ₯Ό μ΄μ©ν΄μ
// κ°μ²΄κ° μμ±λ λλΆν° λ€λ₯Έ κ°μΌλ‘ νλλ₯Ό μ΄κΈ°ν
User u3 = new User("test3", "password3");
// μμ±μ μν μ μ λ¬ν κ°μ μμ±(μμλ₯Ό κΌ μ§μΌμΌν¨)
System.out.println(u3.getUserId());
System.out.println(u3.getUserPw());
}
public void ex4() {//맀κ°λ³μ μμ±μ μμ
User u1 = new User(); // κΈ°λ³Έμμ±μ
User u2 = new User("user02", "pass02") ;// 맀κ°λ³μ 2κ° μμ±μ
User u3 = new User("user03", "pass03", "κΉμ©κΈ°", 30, 'λ¨');
//맀κ°λ³μ 5κ° μμ±μ
System.out.printf("u1 : %s / %s / %s / %d / %c\n",
u1.getUserId(), u1.getUserPw(), u1.getUserName(),
u1.getUserAge(), u1.getUserGender()
);
System.out.printf("u2 : %s / %s / %s / %d / %c\n",
u2.getUserId(), u2.getUserPw(), u2.getUserName(),
u2.getUserAge(), u2.getUserGender()
);
System.out.printf("u3 : %s / %s / %s / %d / %c\n",
u3.getUserId(), u3.getUserPw(), u3.getUserName(),
u3.getUserAge(), u3.getUserGender()
);
}
: μνμ ν¨μμ λΉμ·νλ©° νΈμΆμ ν΅ν΄ μ¬μ©
: μ λ¬ κ°μ΄ μλ μνλ‘ νΈμΆμ νκ±°λ μ΄λ€ κ°μ μ λ¬νμ¬ νΈμΆμ νλ©°, ν¨μ λ΄μ μμ±λ μ°μ° μν
: κ·Έλ¬λ, μν ν λ°ν κ° / κ²°κ³Ό κ°μ μκ±°λ μμ μ μμ
: νλμ λ©μλμλ νλμ κΈ°λ₯λ§ μμ±νλ€.
package edu.kh.oop.method.run;
import edu.kh.oop.method.model.service.MemberService;
public class MemberRun {
public static void main(String[] args) {
// [μ κ·Όμ νμ][μμ½μ΄] λ°νν λ©μλλͺ
([맀κ°λ³μ])
MemberService service = new MemberService();
// MemberServiceμ κΈ°λ³Έμμ±μκ° μμ±λμ΄μμ§μμ§λ―Έγ
γ΄
// μ»΄νμΌλ¬κ° μ½λλ₯Ό λ²μν λ
// ν΄λμ€ λ΄λΆμ μμ±μκ° νλλ μλ€λ©΄
// μλμΌλ‘ κΈ°λ³Έ μμ±μλ₯Ό μΆκ°ν΄μ£ΌκΈ°λλ¬Έμ
// λ¬Έμ μμ΄ μ¬μ© κ°λ₯!
// λ§μ½μ μμ±μκ° νλλΌλ μμΌλ©΄ μλμμ± μν΄μ€λ€!
service.displayMenu(); // λ©μλ νΈμΆ
}
}
package edu.kh.oop.method.model.vo;
public class Member {
private String memberId;
private String memberPw;
private String memberName;
private int memberAge;
// κΈ°λ³Έμμ±μ
// κΈ°λ³Έ μμ±μ κ·μΉ : λ°ννμ΄ μκ³ , ν΄λμ€μ μ΄λ¦μ΄ κ°μμΌνλ€.
public Member() {}
// 맀κ°λ³μ μμ±μ(νλ μ΄κΈ°ν)
// μ€λ²λ‘λ© μ μ©(맀κ°λ³μμ κ°μκ° λ€λ¦)
public Member(String memberId, String memberPw, String memberName, int memberAge) {
// 맀κ°λ³μλ‘ μ λ¬λ°μ κ°μ νλλ‘ λμ
μν€κΈ°.
this.memberId = memberId;
this.memberPw = memberPw;
this.memberName = memberName;
this.memberAge = memberAge;
}
// λ©μλ (getter/setter ν¬ν¨)
public String getMemberId() {
return memberId;
}
public void setMemberId(String memberId) {
this.memberId = memberId;
}
public String getMemberPw() {
return memberPw;
}
public void setMemberPw(String memberPw) {
this.memberPw = memberPw;
}
public String getMemberName() {
return memberName;
}
public void setMemberName(String memberName) {
this.memberName = memberName;
}
public int getMemberAge() {
return memberAge;
}
public void setMemberAge(int memberAge) {
this.memberAge = memberAge;
}
}
package edu.kh.oop.method.model.service;
import java.util.Scanner;
import edu.kh.oop.method.model.vo.Member;
public class MemberService {
// μμ±(νλ) -> μΊ‘μνμμΉμ μν΄ privateμΌλ‘ μμ±
private Scanner sc = new Scanner(System.in);
private Member memberInfo = null; // κ°μ
ν νμμ μ 보λ₯Ό μ μ₯ν λ³μ
private Member loginMember = null; // λ‘κ·ΈμΈν νμμ μ 보λ₯Ό μ μ₯ν λ³μ
// κΈ°λ₯(μμ±μ+λ©μλ)
// λ©λ΄νλ©΄ μΆλ ₯ κΈ°λ₯
public void displayMenu() {
// λ°νν
int menuNum = 0; // λ©λ΄ μ νμ© λ³μ
// 무쑰건 νλ²μ λ°λ³΅ -> do while
do {
System.out.println("====νμ μ 보 κ΄λ¦¬ νλ‘κ·Έλ¨====");
System.out.println("1. νμκ°μ
");
System.out.println("2. λ‘κ·ΈμΈ");
System.out.println("3. νμμ 보 μ‘°ν");
System.out.println("4. νμμ 보 μμ ");
System.out.println("0. νλ‘κ·Έλ¨ μ’
λ£");
System.out.print("λ©λ΄ μ
λ ₯ : ");
menuNum = sc.nextInt();
sc.nextLine(); // μ
λ ₯ λ²νΌμ λ¨μ κ°νλ¬Έμ μ κ±°μ©
switch(menuNum) {
case 1 : System.out.println(signup()); break;
case 2 : System.out.println(login()); break;
case 3 : System.out.println(selectMember()); break;
case 4 :
int result = updateMember();
if(result == -1) {
System.out.println("λ‘κ·ΈμΈ ν μ΄μ©ν΄μ£ΌμΈμ.");
}else if(result ==0) {
System.out.println("νμμ 보 μμ μ€ν¨(λΉλ°λ²νΈ λΆμΌμΉ");
}else {
System.out.println("νμμ λ³΄κ° μμ λμμ΅λλ€.");
}
; break;
case 0 : System.out.println("νλ‘κ·Έλ¨ μ’
λ£..."); break;
default : System.out.println("μλͺ»μ
λ ₯νμ
¨μ΅λλ€. λ€μ μ
λ ₯ν΄μ£ΌμΈμ");
}
}while(menuNum != 0); // menuNumμ΄ 0μ΄λ©΄ λ°λ³΅ μ’
λ£
}
// νμκ°μ
κΈ°λ₯
public String signup() {
//(λ°νν)
// ν΄λΉ λ©μλκ° λλκ³ νΈμΆν κ³³μΌλ‘ λμκ°λ
// String μλ£ν κ°μ κ°μ§κ³ λμκ°λ€λλ»
System.out.println("\n======νμκ°μ
======");
System.out.print("μμ΄λ : ");
String memberId = sc.next();
System.out.print("λΉλ°λ²νΈ : ");
String memberPw = sc.next();
System.out.print("λΉλ°λ²νΈ νμΈ : ");
String memberPw2 = sc.next();
System.out.print("μ΄λ¦ : ");
String memberName = sc.next();
System.out.print("λμ΄ : ");
int memberAge = sc.nextInt();
// λΉλ°λ²νΈ, λΉλ°λ²νΈ νμΈμ΄ μΌμΉνλ©΄ νμκ°μ
// μΌμΉνμ§μμΌλ©΄ νμκ°μ
μ€ν¨
if(memberPw.equals(memberPw2)) {// μΌμΉνλκ²½μ°
// μ
λ ₯λ°μ μ 보λ₯Ό μ΄μ©ν΄μ Member κ°μ²΄ μμ±ν ν
// μμ±λ κ°μ²΄μ μ£Όμλ₯Ό νλμ μλ memberInfoμ λμ
memberInfo = new Member(memberId, memberPw, memberName, memberAge);
return "νμκ°μ
μ±κ³΅!!";
/* μΆλ ₯ ꡬ문 λ©μλλ₯Ό νΈμΆν κ³³μμ νλ²λ§ μ°κ³ ,
* returnμ μ΄μ©ν΄ μ λ¬ν κ°μ μμ±
*/
// return : νμ¬ λ©μλλ₯Ό μ’
λ£νκ³ νΈμΆν κ³³μΌλ‘ λμκ°
// return κ°; : νΈμΆν κ³³μΌλ‘ λμκ° λ κ°μ κ°μ§κ³ λμκ°.
}else { // μΌμΉνμ§ μλ κ²½μ°
return "νμκ°μ
μ€ν¨!! (λΉλ°λ²νΈ λΆμΌμΉ)";
}
}
// λ‘κ·ΈμΈ κΈ°λ₯
public String login() {
System.out.println("\n*********λ‘κ·ΈμΈ*********");
// νμκ°μ
μ νλμ§ λΆν° νμΈ
// == memberInfoκ° κ°μ²΄λ₯Ό μ°Έμ‘°νκ³ μλμ§ νμΈ
if(memberInfo == null) { // νμκ°μ
μ λ¨Όμ μν κ²½μ°
// null : μ무κ²λ μ°Έμ‘°νκ³ μμ§ μμ
return "νμ κ°μ
λΆν° μ§νν΄μ£ΌμΈμ.";
}
System.out.print("μμ΄λ μ
λ ₯ : ");
String memberId = sc.next();
System.out.print("λΉλ°λ²νΈ μ
λ ₯ : ");
String memberPw = sc.next();
// νμκ°μ
μ 보μμ
// μ μ₯λ μμ΄λ, λΉλ°λ²νΈ == μ
λ ₯λ μμ΄λ, λΉλ°λ²νΈκ° κ°μΌλ©΄ "λ‘κ·ΈμΈ μ±κ³΅"
// μΌμΉνμ§ μμΌλ©΄ "μμ΄λ λλ λΉλ°λ²νΈκ° μΌμΉνμ§ μμ΅λλ€."
// μμ΄λ, λΉλ°λ²νΈκ° λͺ¨λ μΌμΉν κ²½μ°
if(memberInfo.getMemberId().equals(memberId) && memberInfo.getMemberPw().equals(memberPw)) {
// μ
λ ₯λ°μ memberIdμ
// memberInfoνλμμ μ°Έμ‘°μ€μΈ λ©€λ²κ°μ²΄μ memberIdκ° κ°μμ§ νμΈ
loginMember = memberInfo;
//μ°Έμ‘°ν = Member κ°μ²΄ μ£Όμ (μμ 볡μ¬)
// νμκ°μ
μ 보λ₯Ό loginMemberμ λμ
νμ¬
// μ΄λ€ νμμ΄ λ‘κ·ΈμΈνλμ§λ₯Ό ꡬλΆν μ μκ²ν¨.
return loginMember.getMemberName() + "λ νμν©λλ€!";
}else {
return "μμ΄λ λλ λΉλ°λ²νΈκ° μΌμΉνμ§ μμ΅λλ€.";
}
}
// νμμ 보 μ‘°ν κΈ°λ₯
public String selectMember() {
System.out.println("\n******νμ μ 보 μ‘°ν******");
// 1) λ‘κ·ΈμΈ μ¬λΆ νμΈ
// λ‘κ·ΈμΈ μνμ λλ "λ‘κ·ΈμΈ ν μ΄μ©ν΄μ£ΌμΈμ" λ°ν
// 2) λ‘κ·ΈμΈμ΄ λμ΄μλ κ²½μ°
// νμμ 보λ₯Ό μΆλ ₯ν λ¬Έμμ΄μ λ§λ€μ΄μ λ°ν
// λ¨, λΉλ°λ²νΈλ μ μΈ
// μ΄λ¦ : νκΈΈλ
// μμ΄λ : user01
// λμ΄ : 25μΈ
if(loginMember == null) {
return "λ‘κ·ΈμΈ ν μ΄μ©ν΄μ£ΌμΈμ";
}
String str = "μ΄λ¦ : " + loginMember.getMemberName();
str += "\nμμ΄λ : " + loginMember.getMemberId();
str += "\nλμ΄ : " + loginMember.getMemberAge() + "μΈ";
return str;
}
// νμμ 보 μμ κΈ°λ₯
public int updateMember() {
System.out.println("\n*********νμ μ 보 μμ *********");
// 1. λ‘κ·ΈμΈ μ¬λΆ νλ³
// λ‘κ·ΈμΈλμ΄μμ§ μμΌλ©΄ -1 λ°ν
// 2. λ‘κ·ΈμΈμ΄ λμ΄μμ λ
// 2-1) μμ ν νμμ 보 μ
λ ₯λ°κΈ°(μ΄λ¦,λμ΄)
// 2-2) λΉλ°λ²νΈλ₯Ό μ
λ ₯λ°μμ λ‘κ·ΈμΈν νμμ λΉλ°λ²νΈμ μΌμΉνλμ§ νμΈ
// -> λΉλ°λ²νΈκ° κ°μ κ²½μ°
// λ‘κ·ΈμΈν νμμ μ΄λ¦, λμ΄ μ 보λ₯Ό μ
λ ₯λ°μ κ°μΌλ‘ λ³κ²½ ν 1 λ°ν
// -> λΉλ°λ²νΈκ° λ€λ₯Ό κ²½μ° 0 λ°ν
if(loginMember == null) {
return -1;
}
System.out.print("μμ ν μ΄λ¦μ μ
λ ₯ν΄μ£ΌμΈμ : ");
String memberName = sc.next();
System.out.print("μμ ν λμ΄λ₯Ό μ
λ ₯ν΄μ£ΌμΈμ : ");
int memberAge = sc.nextInt();
System.out.print("λΉλ°λ²νΈλ₯Ό μ
λ ₯ν΄μ£ΌμΈμ. : ");
String memberPw = sc.next();
if(memberPw.equals(loginMember.getMemberPw())) {
loginMember.setMemberName(memberName);
loginMember.setMemberAge(memberAge);
return 1;
}else {
return 0;
}
}
}