Successfully reported this slideshow.

상속(Inheritance)

1,310 views

Published on

http://wawworld.me

changhoonpark@gmail.com

Published in: Education
  • Be the first to comment

상속(Inheritance)

  1. 1. Objective-C 상속(Inheritance) By Changhoon Park http://changhoonpark.wordpress.com Last Update : 2011. 08. 2811년 9월 13일 화요일
  2. 2. Shape fillColor bounds setFillColor: setBounds: draw Circle Rectangle fillColor fillColor bounds bounds setFillColor: setFillColor: Circle Rectangle setBounds: setBounds: draw draw draw draw 상속이 없는 상속을 사용하는 개선된 Shapes-Object 아키택쳐 Shapes-Object 아키택쳐 2 상속 의미 문법 주요 동작 실습11년 9월 13일 화요일
  3. 3. 효율성 코드의 중복 코드 유지의 어려움 3 상속 의미 문법 주요 동작 실습11년 9월 13일 화요일
  4. 4. @interface Shape : NSObject { ! ShapeColor fillColor; ! ShapeRect bounds; } - (void) setFillColor: (ShapeColor) fillColor; - (void) setBounds: (ShapeRect) bounds; - (void) draw; @end // Shape @interface Circle : Shape @interface Rectangle : Shape { { } } @end // Circle @end // Rectangle 4 상속 의미 문법 주요 동작 실습11년 9월 13일 화요일
  5. 5. @implementation Circle @implementation Shape - (void) draw { - (void) setFillColor: (ShapeColor) c ! NSLog (@"drawing a circle at (%d %d %d %d) in %@", { ! ! bounds.x, bounds.y, ! ! bounds.width, bounds.height, ! fillColor = c; ! ! colorName(fillColor)); } // setFillColor } // draw - (void) setBounds: (ShapeRect) b @end // Circle { ! bounds = b; } // setBounds @implementation Rectangle - (void) draw - (void) draw { { } // draw ! NSLog (@"drawing a rectangle at (%d %d %d %d) in %@", ! ! bounds.x, bounds.y, ! ! bounds.width, bounds.height, @end // Shape ! ! colorName(fillColor)); } // draw @end // Rectangle 5 상속 의미 문법 주요 동작 실습11년 9월 13일 화요일
  6. 6. 메소드 디스패칭 객체에서 메시지를 받았을 때 메소드 실행 현재 객체의 클래스를 찾지 못하면 그 객체의 슈퍼 클래스에서 찾는다 6 상속 의미 메소드 디스패칭 문법 인스턴스 변수 주요 동작 메소드 오버라이딩 실습 슈퍼클래스11년 9월 13일 화요일
  7. 7. - (void) setFillColor: (ShapeColor) c { fillColor = c; } - (void) setBounds: (ShapeRect) b { bounds = b; } // setBounds code Circle - (void) draw class { NSLog (@"drawing a circle at (%d %d %d %d) in %@", bounds.x, bounds.y, bounds.width, bounds.height, colorName(fillColor)); 0,0,10,30 } // draw Red Circle [shapes setFillColor: kRedColor]; 7 상속 의미 메소드 디스패칭 문법 인스턴스 변수 주요 동작 메소드 오버라이딩 실습 슈퍼클래스11년 9월 13일 화요일
  8. 8. - (void) setFillColor: (ShapeColor) c { fillColor = c; Shape code } class - (void) setBounds: (ShapeRect) b { bounds = b; } // setBounds - (void) draw { } // draw - (void) draw Circle code { class NSLog (@"drawing a circle at (%d %d %d %d) in %@", bounds.x, bounds.y, bounds.width, bounds.height, colorName(fillColor)); 0,0,10,30 } // draw Red Circle 8 상속 의미 메소드 디스패칭 문법 인스턴스 변수 주요 동작 메소드 오버라이딩 실습 슈퍼클래스11년 9월 13일 화요일
  9. 9. - (void) setFillColor: (ShapeColor) c { fillColor = c; Shape code } class - (void) setBounds: (ShapeRect) b { bounds = b; } // setBounds - (void) draw { } // draw - (void) draw Circle code { class NSLog (@"drawing a circle at (%d %d %d %d) in %@", bounds.x, bounds.y, bounds.width, bounds.height, colorName(fillColor)); 0,0,10,30 } // draw Red Circle [shapes setFillColor: kRedColor]; 9 상속 의미 메소드 디스패칭 문법 인스턴스 변수 주요 동작 메소드 오버라이딩 실습 슈퍼클래스11년 9월 13일 화요일
  10. 10. 인스턴스 변수 슈퍼 클래스의 인스턴스 변수를 자신의 인스턴스 변수로 추가 self @interface RoundedRectangle : Shape isa ( NSObject ) { ! int radius; fillColor } ( Shape ) bounds @end // RoundedRectangle radius ( RoundedRectangle ) 10 상속 의미 메소드 디스패칭 문법 인스턴스 변수 주요 동작 메소드 오버라이딩 실습 슈퍼클래스11년 9월 13일 화요일
  11. 11. 서브 클래스에서 새로운 메소드를 추가 기존의 메소드를 수정 11 상속 의미 메소드 디스패칭 문법 인스턴스 변수 주요 동작 메소드 오버라이딩 실습 슈퍼클래스11년 9월 13일 화요일
  12. 12. - (void) setFillColor: (ShapeColor) c { fillColor = c; Shape code } class - (void) setBounds: (ShapeRect) b { bounds = b; } // setBounds - (void) draw { } // draw - (void) draw Circle code { class NSLog (@"drawing a circle at (%d %d %d %d) in %@", bounds.x, bounds.y, bounds.width, bounds.height, colorName(fillColor)); 0,0,10,30 } // draw Red Circle 12 상속 의미 메소드 디스패칭 문법 인스턴스 변수 주요 동작 메소드 오버라이딩 실습 슈퍼클래스11년 9월 13일 화요일
  13. 13. - (void) setFillColor: (ShapeColor) c { Shape fillColor = c; code class } - (void) setBounds: (ShapeRect) b { bounds = b; } // setBounds - (void) draw { } // draw Circle code - (void) setFillColor: (ShapeColor) c class { ..... 0,0,10,30 Red Circle [ setFillColor: c]; } [shapes setFillColor: kRedColor]; 13 상속 의미 메소드 디스패칭 문법 인스턴스 변수 주요 동작 메소드 오버라이딩 실습 슈퍼클래스11년 9월 13일 화요일
  14. 14. Shape-Object-2 함수를 수정하기 - 중복되는 부분에 대하여 상속을 이용하여 수정 - Shape 클래스 만들기 - p87쪽 참고하여 Circle의 setFillColor 수정하기 14 상속 의미 문법 주요 동작 실습11년 9월 13일 화요일

×