여니의 성장 diary
article thumbnail
728x90
반응형

5분 지각해서 속상한 마음으로 시작하는 하루 ,,,,,,,, 지만 별거아니지!

오늘은 2교시까지 복습 + 다형성 활용 수업을 듣고 나머지는 자습시간이기 때문에

간단하게 수업 내용 정리하고 문제 풀러 갑니당ㅎㅎㅎㅎㅎ

List<> 활용

 

클래스의 다형성을 활용해보기 전에 List<>의 활용에 대해 조금 더 알아보았다.

List<>는 인터페이스이고, 구현할 수 있는 클래스는 ArrayList와 LinkedList이다.

 

먼저 새로운 ArrayList<> 객체를 생성하여 String 타입을 저장하는 List<> 타입의 list에 할당하고,

지난 수업 시간에 활용했던 것처럼 필드명.add("입력값") 메소드로 list에 값을 저장해준다.

 

그리고 추가로 한 가지 더!

필드명.remove("저장된값") 또는 필드명.remove(int값) 메소드를 구현하면

list에 저장된 값을 삭제해주는 기능을 사용할 수 있다.

 

이 메소드는 Object 타입을 매개변수로 받기 때문에 모든 자료 타입을 할당할 수 있고,

이 때 활용되는 매개변수 int값은 ArraysList<>에서의 index와 동일하다.

 

 

다음은 새로운 객체를 생성하여 값을 할당하고, 할당된 값을 List<>에 저장하는 방법이다.

위의 코드에서 사용된 Contact 클래스는 바로 아래에 있으니 참고 :)

 

Line 10, 11과 같이 객체에 값을 할당하고 필드에 저장하여 필드에 할당된 값을 contactList에 저장한다.

그리고 Line 14와 같이 List.add()메소드에서 직접 객체 생성 및 할당을 하여 저장할수도있다.

 

이 두 가지 방법의 차이를 비교하자면 주석처리된 예시와 같은 맥락이라고 할 수 있다! 

 


클래스의 다형성 활용

필드, 생성자를 갖는 Contruct 클래스

 

다음으로 클래스의 다형성을 활용하여 데이터를 추가하여 저장하고, 목록을 출력하는 예제를 실습해보았다!

 

먼저 Contact 클래스에는 id, name, phoneNumber 필드를 선언해주고,

사용될 name과 phoneNumber 필드는 생성자에서 초기화 시키고, getter와 setter 또한 생성해준다.

 

toString()메소드를 오버라이딩 한 것은 출력했을 때 더 깔끔하게 확인할 수 있도록 하기위함이다 :)

 

선택 및 출력 화면을 위한 ContactController 클래스

 

다음은 메인메소드에서 호출하여 데이터를 활용하고자 할 때 입력값에 따라 선택한 항목을 실행하고,

해당되는 데이터를 출력할 수 있는 메소드를 정의하기 위한 클래스를 만들어준다.

 

메소드 내 선택 화면은 println() 메소드로 원하는 형태를 입력하여 꾸며주고,

반복문 while문과 조건문 switch문으로 입력값에 따라 선택 항목이 실행되도록 코드를 작성한다.

 

생성자에 대한 내용은 아래에서 다시 살펴봅니당!

 

 

이전까지의 예제에서는 데이터를 담고 있는 클래스를 1개만 생성하여 활용하였다면

이번에는 여러 개의 클래스에 담긴 데이터를 활용할 수 있는 방법을 배워보았다.

 

같은 메소드를 사용하지만 담겨진 데이터가 다른 두 개의 클래스를 각각 생성해주고,

두 가지 데이터를 추상화하는 interface를 아래와 같이 생성해준다.

그리고 두 개의 클래스를 생성된 interface를 implements 하도록 설정해준다.

 

inteface를 통해 여러 개의 클래스에 담긴 데이터를 모두 활용할 수 있도록

ContactController 클래스에서 ContactByDao 인터페이스를 활용할 수 있도록 포함해주고,

생성자에서 ContactByDao 타입의 dao를 매개변수로 하여 dao를 초기화해준다.

 

 

이와 같은 방법으로 ContactByDao 인터페이스를 implements하는 또 다른 클래스를 생성해주면

메인메소드에서 객체를 생성하여 ContactController에 어떤 클래스의 정보를 할당하냐에 따라

다양하게 데이터를 활용하고, 선택값에 따른 결과를 출력하여 확인해 볼 수 있다.

 

 

추후에 데이터베이스 프로그램을 사용하게되면 유용하게 사용될 코드이기 때문에 정리해보았다!

이번 주 진도는 여기서 끝 ~~~~~~~~~~~~~~~~~~~~~~~ :)

 

 

 

728x90
반응형
profile

여니의 성장 diary

@pponyo

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!