티스토리 뷰
상속(Ingeritance) / 다형성(poly) 을 쓰는 이유 ? => 객체지향을 쓰는 이유와 같다.
간단하게 유지보수 라고 압축하겠음.
객체지향에 관한 글은 아래에 있으니 다시 읽으러 가기 !
2024.02.07 - [2월] - 2024.02.07_ 객체 지향 프로그래밍 , 메소드 , 클래스 (+ 객체, 인스턴스)
인터페이스(Interface)
1. 인터페이스의 모든 메소드는 public abstract 로 선언(Java 7버전 까지)
-> public abstract 수식어 생략 가능
2. 인터페이스의 모든 멤버 변수는 public static final 로 선언
-> public static final 수식어 생략 가능
3. 인터페이스를 선언할 때는 interface 키워드 사용
4. 인터페이스를 구현(상속) 하는 클래스는 implements 키워드 사용
5. 클래스는 다중 상속이 불가능
(예) class Child extends Parent1, Parent2 (X)
6. 인터페이스는 다중 구현이 가능
(예) class Child implements Inter1, Inter2 (O)
7. Interface 는 인스턴스 생성이 불가능 하다
- interface 멤버 변수는 public static final 을 사용하며, 생략할 수 있음
- interface 메소드는 public abstract 를 사용하며, 생략가능하다
- abstract 이 붙기 때문에 추상 메소드라고 생각하면 되며, 인스턴스를 생성 불가하다는 특징이 있음
new 로 클래스를 생성할 떄 interface > add 해서 상속받으면 알아서 override 해둔다
인터페이스는 인스턴스 생성이 불가능 해서 다형성으로 해결
인터페이스명 변수명 = new 클래스명();
인터페이스를 사용한 연락처 프로그램 만들기의 순서
Main 은 MVC 디자인 패턴에서 View 클래스 : UI를 담당하는 역할이며 현재의 시스템은 규모가 작으므로 Controller 역할도 수행
MemberDAO (인터페이스) main에서 데이터를 전송받고 돌려준다.
main에서 데이터를 전송하면 DB에 저장하고, main에서 데이터를 요청하면 DB에서 돌려주는 형식
MemverVO(클래스) 는 MVC 디자인 패턴에서 Model 클래스, 데이터 정보 or DTO(Data Transfer Object)
1. MemberVO(클래스) 는 데이터 정보를 가지고 있어야 하므로
이 클래스에서 멤버 변수(필드, 프로퍼티) , 기본 생성자 , 멤버변수 생성자 , getter/setter , toString()까지 선언해준다.
2. MemberDAO(인스턴스) 에서 메소드 설계하고, MemberDAOImple(클래스) 만들때 new>class>interfaces > add 해서
MemberDAO의 메소드를 override 해준다
3. Main 작성하면서 ㅎㅎ
MemberDAO 설계하고 인터페이스를 상속(?)하면 알아서 override 된다
main을 작성하면서 회원 정보를 저장할 배열 list 만들어주고
최대 회원수 변수 선언, 배열에 저장될 데이터 개수도 선언해주고
private 이므로 간접적으로 읽어주는 getCount() 도 생성해준다
MemberDAOImple 인스턴스를 저장하는 변수를 선언해주고
싱글톤 인스턴스를 생성해준다
Menu를 main문 밖에서 선언할 수도 있지만 가독성과 유지보수를 위해
Menu 클래스를 따로 만들어주고
swtich문에서 사용하기 위해
클래스명.상수명
입력한다.
물론 해당 클래스에 implements Menu
입력해도 되지만
가독성을 위해 위와 같이 입력함