달린다 개발/자바

[자바|실전]연락처 관리 프로그램 만들기(정보 출력)_1

고타 2022. 4. 18. 11:20
자바 이클립스로 연락처 관리 프로그램 만들기

 

기획 : 

연락처 관리를 위해서는 연락처 클래스를 만든다. 

연락처 클래스 하부에 업무연락처 클래스와 개인연락처 클래스를 따로 구분하여 만든다.

연락처 클래스 (Contact) : 연락처번호, 이름, 전화번호, 이메일의 공통 필드를 만들고, 

개인연락처 클래스 (PersonalContact) : 관계, 생일의 세부필드

업무연락처 클래스 (BizContact) : 회사, 직함의 세부 필드를 만든다.

 

 

1. 메인 함수 바깥에 연락처클래스(Contact)를 만들어준다. 

바깥의 공통 클래스이므로 필드 변수는 접근지정자로 private 를 붙인다. 

private 를 붙였기 때문에 다른 클래스에서 반환 받을 수 있도록 Getter&Setter를 같이 만들어준다.

 

메인 함수 위에 Contact 라는 연락처클래스를 위와 같이 만들어준다

메인 함수 위에 Contact 라는 연락처클래스를 위와 같이 만들어준다

지저분하게 보이기 때문에 4개의 멤버에 대한 Getter Setter 항목 옆에 - 표시를 눌러 아래와 같이 줄여준다.

 

조금더 깔끔해짐..

 

+팁

추가 메서드를 만들어준다. 

안만들어도 프로그램 상 문제는 없으나 특별한 일이 없으면 자기 정보를 노출하는 메서드를 만들어주는 것이 좋다. 

2. 업무연락처 클래스(BizContact)와 개인연락처 클래스(PersonalContact)를 같은 방식으로 만들어준다. 

 업무연락처와 개인연락처 클래스는 상속( extends)을 사용하여 공통분모인 연락처클래스도 상속해준다.

 마찬가지로 각 클래스 private 변수를 받아주기 위해 Getter&Setter 를 단축키를 통해서 빠르게 각각 만들어준다.

  (* 단축키 : Alt+ Shift + S 를 누르고 R 누르면 바로 Getter&Setter 생성 화면으로 간다)

보기 깔끔하게 왼쪽의 -를 이용하여 만들어준다

위 클래스 팁 부분에 했던것과 마찬가지로 각 클래스 아래에 Public info 반환값을 만들어준다.

업무연락처에는 company 와 title을
개인연락처 클래스 아래에는 relation 과 birth 항목을 넣었다

하지만 이렇게만 하면 문제가 발생할 수 있다. 

개인연락처든, 업무연락처든 공통 정보인 연락처번호, 이름, 이메일, 전화번호 인 항목을 같이 끌어와야 하는데, 

private 멤버라서 상속하더라도 가져올수가 없다. 따라서 논리적으로 이런 경우, 앞서 만들어줬던 String info()를 가져오면 된다.

그렇다면 여기서 자기 클래스 멤버를 표시하는 this. 사용?

안된다. this.info 를 통해 불러오면 각 클래스에 있는 String info()가 같은 이름으로 있어서 불려오기 때문에,

대신, super 를 사용한다. 상속 받은 부모의 것임을 표시하고 받기 위한 super를 사용하면 된다.

 " super.info( ); "를 사용하면 된다.   String info = super.info(); 를 아래와 같이 사용 하면 된다.

 

이렇게 하면 나중에 메인 클래스에서 info를 끌어올때 함께 출력된다.

 

3. 메인클래스에 해당 정보를 set을 통해 쓰고, info를 통해 불러온다

아무개의 개인연락처를 저장한다고 할 때, 위와 같이 작성한다.

personalContact라는 개인정보 변수를 만들어주고,  .(dot)을 붙이고 set(쓰기)을 붙이고 ()안에 정보를 입력한다.

syso를 통해 출력할 때는 System.out.println(personalContact.info() ); 를 사용하여 출력하면 된다. 

(personalContact의 변수에 .(dot)와 info의 내용을 끌어오기 때문)

 

 

 

자!! 출력을 해보자

 

출력이 잘 되었따