Java mentoring of samsung scsc 3

Description
1. “Object Programming(3)” 객체지향 프로그래밍(3) 2. 1. Abstract, Interface 3. Object Object 프로그래밍은 세상에 있는 정보들을 효율적으로…

Please download to get full document.

View again

of 20
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Information
Category:

Slides

Publish on:

Views: 2 | Pages: 20

Extension: PDF | Download: 0

Share
Transcript
  • 1. “Object Programming(3)” 객체지향 프로그래밍(3)
  • 2. 1. Abstract, Interface
  • 3. Object Object 프로그래밍은 세상에 있는 정보들을 효율적으로 담기 위하여 만들어졌다.
  • 4. 객체지향의 4대 특징 추상화 다형성캡슐화 상속성
  • 5. 캡슐화(Cabsulate) Tell Don’t ask 데이터를 묻지말고 기능을 실행 Method에서 생성한 객체의 Method 만 호출 Parameter로 받은 객체의 Method만 호출 필드를 참조하는 객체의 Method만 호출 Method & Variables Class
  • 6. 캡슐화(Cabsulate) class SinivelCap { void Task() { System.out.println("콧물이 멈추 기 시작합니다.."); } } class SneezeCap { void Task() { System.out.println("재채기가 멈 추기 시작합니다.."); } } class SnuffleCap { void Task() { System.out.println("코가 뚫리기 시작합니다..."); } } public class ColdPatient { public static void main(String[] args) { ColdPatient cp = new ColdPatient(); SinivelCap 콧물 = new SinivelCap() ; SneezeCap 재채기 = new SneezeCap() ; SnuffleCap 코가뻥 = new SnuffleCap(); cp.TaskSinivelCap(콧물); cp.TaskSneezeCap(재채기); cp.TaskSnuffleCap(코가뻥); } void TaskSinivelCap(SinivelCap 콧물) {콧 물.Task();}; void TaskSneezeCap(SneezeCap 재채기) {재채기.Task();}; void TaskSnuffleCap(SnuffleCap 코가뻥) {코가뻥.Task();};
  • 7. 캡슐화(Cabsulate) 코감기는 항상 콧물, 재채기, 코막힘을 동반한다. class SinivelCap class SneezeCap class SnuffleCap 복용 순서는 SinivelCap, SneezeCap, SnuffleCap 순이다. IF 순서대로 복용하지 않을시 큰일이 벌어진다면?
  • 8. 캡슐화(Cabsulate) public class ColdPatient { public static void main(String[] args) { Contac600 contack = new Contac600(); ColdPatient cp = new ColdPatient(); cp.Task(contack); } void Task(Contac600 contack) { contack.Task(); } } class Contac600 { private SinivelCap 콧물; private SneezeCap 재채기; private SnuffleCap 코가뻥; public Contac600() { // TODO Auto-generated constructor stub 콧물 = new SinivelCap() ; 재채기 = new SneezeCap() ; 코가뻥 = new SnuffleCap(); } void Task() { 콧물.Task(); 재채기.Task(); 코가뻥.Task(); } } 외부에서 약물이 수정되 어서는 안된다! 순서대로 복용이 지켜질 수 밖에 없다.
  • 9. 상속성(Extends) Class Cat { boolean eye; boolean ear; boolean nose; String name; } Class Bear { boolean eye; boolean ear; boolean nose; String name; } Class Dog { boolean eye; boolean ear; boolean nose; String name; }
  • 10. 상속성(Extends) 중복없이 기능들을 재사용할수 없을까?
  • 11. 상속성(Extends) public class Ground { public static void main(String[] args) { 고양이 야옹이 = new 고양이(); 강아지 멍멍이 = new 강아지(); 곰 곰팅이 = new 곰(); } } class 동물 { boolean eye; boolean ear; boolean nose; String name; void move() { System.out.println("움직입니다."); } } class 고양이 extends 동물{ public 고양이() { // TODO Auto-generated constructor stub eye = true; ear = true; nose = true; name = "고양이"; } @Override void move() {super.move()} } class 강아지 extends 동물{ public 강아지() { // TODO Auto-generated constructor stub eye = true; ear = true; nose = true; name = "강아지"; } @Override void move() {super.move()} } class 곰 extends 동물{ public 곰() { // TODO Auto-generated constructor stub eye = true; ear = true; nose = true; name = "곰"; } @Override void move() {super.move()} }
  • 12. 다형성(polymophizem) 고양이, 강아지, 곰은 동물을 상속받기에 동물의 이름으로써 고양이 강아지 곰의 메소드를 쓸수있다. public class Ground { public static void main(String[] args) { 동물 야옹이 = new 고양이(); 동물 멍멍이 = new 강아지(); 동물 곰팅이 = new 곰(); } }
  • 13. 상속성(Extends) 동물들은 걸어다닐수 있지만 짖기도 한다. 모두 다르게 짖는데 어떻게 할수있을까?
  • 14. 추상클래스 상속 받을시 반듯이 재정의 하여야하는 클래스 추상 메서드를 가지고 있다. abstract class 동물 { boolean eye; boolean ear; boolean nose; String name; void move() { System.out.println("움직입니다."); } abstract void bark(); }
  • 15. 추상클래스 Class Cat extends 동물{ boolean eye; boolean ear; boolean nose; String name; @Override void move(){super.move()} @Override void bark(){ }; } Class Bear extends 동물 { boolean eye; boolean ear; boolean nose; String name; @Override void move(){super.move()} @Override void bark(){ }; Class Dog extends 동물 { boolean eye; boolean ear; boolean nose; String name; @Override void move(){super.move()} @Override void bark(){ }; 모두 다르게 짖기에 알아서 정의해 쓰시오!
  • 16. 인터페이스 눈 O 코 O 귀 O 걷다 O 수영 X 눈 O 코 O 귀 O 걷다 O 수영 X 눈 O 코 O 귀 O 걷다 O 수영 X 눈 O 코 O 귀 O 걷다 O 수영 O 오리는 동물이다. 하지만 고양이, 곰, 강아지는 수영을 못하지만 오리는 수영을 할수있다. 객체지향 설계에 문제가 생기기 시작한다!
  • 17. 인터페이스 interface 수영 { boolean swim_check = false; void swimming(boolean swim_check); } 오리는 수영을 할수있다! 그렇기에 수영이라는 Interface를 만든다 Interface는 추상 메서드를 가지고있는 Class이다. 오직 추상 메서드만을 가질수 있다.
  • 18. 인터페이스 interface 수영 { boolean swim_check = false; void swimming(boolean swim_check); } 오리는 수영을 할수있다! 그렇기에 수영이라는 Interface를 만든다 Interface는 추상 메서드를 가지고있는 Class이다. 오직 추상 메서드만을 가질수 있다.
  • 19. 인터페이스 class 오리 extends 동물 implements 수영{ public 오리() { // TODO Auto-generated constructor stub eye = true; ear = true; nose = true; name = "오리"; } @Override void move() { super.move(); } @Override void bark() { } @Override public void swimming(boolean swim_check) { } }
  • 20. 감사합니다.
  • Related Search
    Similar documents
    View more...
    We Need Your Support
    Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

    Thanks to everyone for your continued support.

    No, Thanks