728x90 반응형 객체지향35 42) 인터페이스의 장점2 42) 인터페이스의 장점 2 1. 장점 개발 시간을 단축할 수 있다 A가 B를 사용하려면 먼저 B가 완성되어야 한다. 그래서 시간이 걸린다. 하지만 인터페이스를 사용하는 경우, A는 껍데기만 있으면 된다. B가 완성이 안 돼있어도 A는 B를 사용하면 된다. I는 추상 메서드의 집합이기 때문에 A에 가져와서 나머지를 완성하면 된다. 변경에 유리한 유연한 설계가 가능하다 이전 시간에 했던 거라 '인터페이스의 장점 1을 참고하세요. 표준화가 가능하다 Java Application을 개발하는 회사는 DB에 데이터를 요청하고 data를 주고받으며 어플을 개발한다. 만약 DB회사가 여러 개 있는데 한 회사가 가격을 올린다고 한다. 그럼 기존에 쓰는 사용자는 다른 DB회사로 옮기고 싶다. 하지만 DB회사에 따라 형식.. 2021. 6. 24. 41) 인터페이스의 장점1 41) 인터페이스의 장점1 1. 장점 두 대상(객체) 간의 '연결, 대화, 소통'을 돕는 '중간 역할'을 한다. : interface=inter(~사이에)+face(얼굴, 대상) 복잡한 기계가 있다고 하자. 사람이 기계를 보고 조작하려면 쉽지 않다. 그래서 껍데기를 씌어서 사람이 이용하기 쉽도록 하는 것이 인터페이스다. 사람이 직접 기계를 조작하는 것보다 사람이 사용하기 편한 인터페이스를 기계에 붙여놓으면 사용하기 편리하다. 기계인 하드웨어가 아무리 바껴도 인터페이스가 바뀌지 않으면 우리는 사용하는데 불편함이 없다. 하지만 계속 하드웨어가 바뀌면 우리는 바뀔 때마다 하드웨어 사용법을 익혀야 하기 때문에 불편해진다. -선언(설계)과 구현을 분리시킬 수 있게 한다. :선언(껍데기)+구현(알맹이)을 분리시키게.. 2021. 6. 24. 40) 인터페이스와 다형성 40) 인터페이스와 다형성 1. 인터페이스를 이용한 다형성 -인터페이스도 구현 클래스의 부모? yes :엄밀히 말하면 부모는 아니다. 부모가 되려면 클래스이어야 하니까. 하지만 부모나 다름없다. 1 2 3 4 class Fighter extends Unit implements Fightable{ public void move(int x, int y){ /*내용 생략*/ } public void attack(Fightable f){ /*내용 생략*/ } } Colored by Color Scripter cs Fighter클래스는 Unit을 상속받고, Fightable을 구현한다. 도식화하자면(상속은 '○'표시로, 인터페이스는 '□'표시로) 원래 같으면 다중 상속은 충돌 문제가 발생한다. Fighter클래스.. 2021. 6. 23. 38) 추상클래스의 작성2 38) 추상클래스의 작성2 1. 작성방법1: 공통부분을 Unit클래스로 Tv가 3개 있다. 각 티비는 켜기, 끄기, 채널 돌리기의 세 가지 공통점(■)이 있는데, 각각 하나씩 다른 기능(●▲♥)이 있다. 추상클래스1편에서 클래스마다 공통적인 요소를 매번 작성하면 불편하기 때문에 Unit클래스에 공통적인 요소를 넣으라고 했었다. 아래 주소 참고. https://feastforall.tistory.com/68 37) 추상클래스의 작성1 37) 추상클래스의 작성 1 1. 추상클래스의 작성 -여러 클래스에 공통적으로 사용될 수 있는 추상클래스를 바로 작성하거나 기존클래스의 공통부분을 뽑아서 추상클래스를 만든다. 이 소스코드 feastforall.tistory.com 공통적인 부분을 하나의 클래스□로 작성하고 그.. 2021. 6. 16. 37) 추상클래스의 작성1 37) 추상클래스의 작성 1 1. 추상클래스의 작성 -여러 클래스에 공통적으로 사용될 수 있는 추상클래스를 바로 작성하거나 기존클래스의 공통부분을 뽑아서 추상클래스를 만든다. 이 소스코드를 화면에 구현해본다고 하자. 군인 클래스에는 군인의 위치, 위치 변동 기능, 멈춤 기능, 스팀팩사용기능이 있다. 탱크와 수송선도 각각의 기능이 있다. 하지만 위치, 멈춤기능, 위치 변동 기능은 모두 다 사용하고 있는 것이기 때문에 일일이 클래스마다 작성하는 것은 시간낭비+코드만 길어지는 격이 된다. 그래서 공통적인 부분을 'Unit'클래스를 만들어 한 곳에 묶어주자. 공통으로 묶어주는 클래스를 'Unit'이라 칭하고, 공통된 부분 '위치'와 '이동 기능', '멈춤 기능'을 넣는다. 위치 이동은 군인, 탱크, 수송선 모두.. 2021. 6. 15. 36) 추상클래스(abstract class), 추상메서드(abstract method) 36) 추상 클래스(abstract class) 1. 추상클래스(abstract class) -미완성 설계도(미완성 클래스) -미완성 메서드를 가지고 있는 클래스 1 2 3 4 abstract class Player{ abstract void play(int pos); abstract void stop(); } c -다른 클래스 작성에 도움을 주기 위한 것. 인스턴스 생성 불가 1 Player p = new Player();//에러! 추상클래스의 인스턴스 생성불가 cs -상속을 통해 추상메서드를 완성해야 인스턴스 생성가능 1 2 3 4 5 6 7 8 9 abstract class Player{ abstract void play(int pos); abstract void stop(); } class Aud.. 2021. 6. 10. 34) 매개변수의 다형성(1)-다형적 매개변수 34) 매개변수의 다형성(1)-다형적 매개변수 장점: ①다형적 매개변수 ②하나의 배열로 여러 종류 객체 다루기 지금까지 배운 다형성: ①Tv t = new SmartTv(); ②참조 변수의 형 변환-리모콘 바꾸기 ③instanceof연산자를 이요한 형변환 가능 여부 판단 1. 매개변수 다형성 -참조형 매개변수는 메서드 호출 시, 자신과 같은 타입 또는 자손 타입의 인스턴스를 넘겨줄 수 있다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 class Product{ int price; int bonusPoint; } class Tv extends Product{ } class Aud.. 2021. 6. 10. 31) 다형성(polymorphism) 31) 다형성(polymorphism) 1. 다형성(많을 다/형태 형) -여러 가지 형태를 가질 수 있는 능력 -'조상타입'의 참조변수로' 자손타입' 객체를 다루는 것★★★★★ 이 클래스를 가지고 객체를 만들면 Tv t = new Tv(); //Tv객체 SmartTv s = new SmarTv();//SmartTv객체 객체와 타입이 일치되었다. 하지만, 다형성은 Tv t = new SmartTV(); //타입불일치 객체와 타입이 불일치가 된다. 조상의 타입변수로 자손 타입 객체를 다루는 것이 '다형성'이다. 2. 객체와 참조변수의 타입이 일치할 대와 일치하지 않을 때의 차이 smartTv의 리모콘은 7개의 버튼을 가지고 있다. Tv로부터 상속받은 5개의 버튼과 smartTv의 버튼 2개 총 7개의 버튼이.. 2021. 6. 9. 29) 접근제어자(access modifier): private, default, protected, public 29) 접근제어자(access modifier): private, default, protected, public 1. 접근제어자의 종류 private: 같은 클래스 내에서만 접근이 가능하다. (default): 같은 패키지 내에서만 접근이 가능하다. protected: 같은 패키지 내에서, 그리고 다른 패키지의 자손클래스에서 접근이 가능하다. public: 접근 제한이 전혀 없다. 하나의 대상에 4개 중에 1개만 사용가능하다. 제어자 같은 클래스 같은 패키지 자손클래스 전체 public O O O O protected O O O (default) O O private O public> protected>(default)>private순으로 접근 범위가 작아진다. 2. 접근제어자 주의사항 -public과.. 2021. 6. 7. 이전 1 2 3 4 다음 728x90 반응형