[자바|실전]연락처 관리 프로그램 만들기(정보 출력)_1
자바 이클립스로 연락처 관리 프로그램 만들기
기획 :
연락처 관리를 위해서는 연락처 클래스를 만든다.
연락처 클래스 하부에 업무연락처 클래스와 개인연락처 클래스를 따로 구분하여 만든다.
연락처 클래스 (Contact) : 연락처번호, 이름, 전화번호, 이메일의 공통 필드를 만들고,
개인연락처 클래스 (PersonalContact) : 관계, 생일의 세부필드
업무연락처 클래스 (BizContact) : 회사, 직함의 세부 필드를 만든다.
1. 메인 함수 바깥에 연락처클래스(Contact)를 만들어준다.
바깥의 공통 클래스이므로 필드 변수는 접근지정자로 private 를 붙인다.
private 를 붙였기 때문에 다른 클래스에서 반환 받을 수 있도록 Getter&Setter를 같이 만들어준다.
메인 함수 위에 Contact 라는 연락처클래스를 위와 같이 만들어준다
지저분하게 보이기 때문에 4개의 멤버에 대한 Getter Setter 항목 옆에 - 표시를 눌러 아래와 같이 줄여준다.
+팁
추가 메서드를 만들어준다.
안만들어도 프로그램 상 문제는 없으나 특별한 일이 없으면 자기 정보를 노출하는 메서드를 만들어주는 것이 좋다.
2. 업무연락처 클래스(BizContact)와 개인연락처 클래스(PersonalContact)를 같은 방식으로 만들어준다.
업무연락처와 개인연락처 클래스는 상속( extends)을 사용하여 공통분모인 연락처클래스도 상속해준다.
마찬가지로 각 클래스 private 변수를 받아주기 위해 Getter&Setter 를 단축키를 통해서 빠르게 각각 만들어준다.
(* 단축키 : Alt+ Shift + S 를 누르고 R 누르면 바로 Getter&Setter 생성 화면으로 간다)
위 클래스 팁 부분에 했던것과 마찬가지로 각 클래스 아래에 Public info 반환값을 만들어준다.
하지만 이렇게만 하면 문제가 발생할 수 있다.
개인연락처든, 업무연락처든 공통 정보인 연락처번호, 이름, 이메일, 전화번호 인 항목을 같이 끌어와야 하는데,
private 멤버라서 상속하더라도 가져올수가 없다. 따라서 논리적으로 이런 경우, 앞서 만들어줬던 String info()를 가져오면 된다.
그렇다면 여기서 자기 클래스 멤버를 표시하는 this. 사용?
안된다. this.info 를 통해 불러오면 각 클래스에 있는 String info()가 같은 이름으로 있어서 불려오기 때문에,
대신, super 를 사용한다. 상속 받은 부모의 것임을 표시하고 받기 위한 super를 사용하면 된다.
" super.info( ); "를 사용하면 된다. String info = super.info(); 를 아래와 같이 사용 하면 된다.
3. 메인클래스에 해당 정보를 set을 통해 쓰고, info를 통해 불러온다
아무개의 개인연락처를 저장한다고 할 때, 위와 같이 작성한다.
personalContact라는 개인정보 변수를 만들어주고, .(dot)을 붙이고 set(쓰기)을 붙이고 ()안에 정보를 입력한다.
syso를 통해 출력할 때는 System.out.println(personalContact.info() ); 를 사용하여 출력하면 된다.
(personalContact의 변수에 .(dot)와 info의 내용을 끌어오기 때문)
자!! 출력을 해보자