Kế thừa và đa hình

Tài liệu tương tự
Kế thừa

NGÔN NGỮ THỐNG KÊ R

Xử lý ngoại lệ

Java cơ bản

Lập trình và ngôn ngữ lập trình

Trường ĐHBK Hà Nội Khoa Điện Bộ môn Điều khiển Tự động Tài liệu hướng dẫn thực hành: KĨ THUẬT LẬP TRÌNH C/C++ Bài 1: Lập trình cơ sở 1 Mục đích bài th

1

Copyright vietjack.com Chuỗi (String) trong C# Trong C#, bạn có thể sử dụng các chuỗi (string) như là mảng các ký

Copyright vietjack.com Nạp chồng toán tử trong C# Operator Overloading là Nạp chồng toán tử. Bạn có thể tái định

Lớp và đối tượng-các hàm và các lớp friend Lớp và đối tượng-các hàm và các lớp friend Bởi: Thanh Hiền Vũ CÁC HÀM VÀ CÁC LỚP friend Một hàm friend của

26 Khoa hoïc Coâng ngheä LẬP TRÌNH PHÂN TÁN DÙNG CÔNG NGHỆ MOBILE AGENT VỚI SỰ HỖ TRỢ CỦA JAVA VÀ VOYAGER Tóm tắt ThS. Nguyễn Khắc Quốc * Lập trình ph

NGÔN NGƯ LÂ P TRIǸH Biên tập bởi: nguyenvanlinh

Những cơ sở của ngôn ngữ C# Những cơ sở của ngôn ngữ C# Bởi: phamvanviet truonglapvy Trong chương này sẽ trình bày về hệ thống kiểu trong C#; phân biệ

Thực hành trên Rose Thực hành trên Rose Bởi: Đoàn Văn Ban Xây dựng biểu đồ thành phần + Tạo lập mới hoặc mở một biểu đồ thành phần đã được tạo lập trư

Chương trình dịch

Array, Indexer và Collection Array, Indexer và Collection Bởi: phamvanviet truonglapvy Mảng (Array) Mảng là một tập hợp các phần tử có cùng kiểu, được

Hàm và lớp template trong Lập trình hướng đối tượng Hàm và lớp template trong Lập trình hướng đối tượng Bởi: unknown Trong phần này, chúng ta tìm hiểu

Bài tập thực hành Chuyên đề 1 CNPM - Java Khoa CNTT- Trường ĐH Công nghệ TP.HCM Lab 01: LẬP TRÌNH JAVA CƠ BẢN VỚI NET BEANS A. MỤC TIÊU: Hướng dẫn tải

Template and Exception Template and Exception Bởi: Thanh Hiền Vũ TEMPLATE Trong phần này, chúng ta tìm hiểu về một trong các đặc tính còn lại của C++,

Lập trình cấu trúc trong Visual Basic Lập trình cấu trúc trong Visual Basic Bởi: Nguyễn Sơn Học xong chương này, sinh viên phải nắm bắt được các vấn đ

Chương trình dịch

Microsoft Word - Bai 7.1.docx

Microsoft Word - action_trong_jsp.docx

Chuỗi Chuỗi Bởi: phamvanviet truonglapvy Chuỗi (string) trong C# là một kiểu dựng sẵn như các kiểu int, long, có đầy đủ tính chất mềm dẻo, mạnh mẽ và

Tìm hiểu ngôn ngữ lập trình Visual Basic Tìm hiểu ngôn ngữ lập trình Visual Basic Bởi: Khuyet Danh Tìm hiểu ngôn ngữ lập trình Visual Basic Tổng quan

Microsoft Word - su_dung_sqlite_voi_php.docx

Chương trình dịch

OpenStax-CNX module: m Giới thiệu về ngôn ngữ C và môi trường turbo C 3.0 ThS. Nguyễn Văn Linh This work is produced by OpenStax-CNX and licens

Lớp đối tượng trong.net Framework Lớp đối tượng trong.net Framework Bởi: Khuyet Danh Trong chương này chúng ta sẽ tìm hiểu các lớp cơ sở mà.net cung c

Microsoft Word - jsp_syntax.docx

Microsoft Word - fragment_transition_trong_android.docx

Microsoft Word - status_code_trong_servlet.docx

Microsoft Word - kieu_du_lieu_trong_jdbc.docx

Microsoft Word - server_response_trong_servlet.docx

Microsoft Word - custom_component_trong_android.docx

Animation, Modules 6 - Hoạt hình, tách file

1 Tạo slide trình diễn với Microsoft Powerpoint Tạo slide trình diễn với Microsoft Powerpoint Người thực hiện Hoàng Anh Tú Phạm Minh Tú Nội dung 1 Mục

Microsoft Word - 09-TRAN CAO DE(56-63)

Phụ lục 2: HỒ SƠ NĂNG LỰC NĂM 2014

Chương Trình Đào Tạo

Microsoft Word - tao_ung_dung_hello_world_trong_android.docx

Microsoft Word - custom_font_trong_android.docx

Microsoft Word - session_tracking_trong_servlet.docx

Phụ lục 2: HỒ SƠ NĂNG LỰC NĂM 2014

CÀI ĐẶ T ANDROID TRÊN NETBEAN Yêu cầ u:trong quá trình cài đặ t phả i kế t nố i mạ ng,và phiên bả n này đượ c cài trên windows. 1.Download Netbean(6.7

MỤC LỤC

TRƯỜNG ĐẠI HỌC BÀ RỊA-VŨNG TÀU KHOA CƠ KHÍ GIÁO TRÌNH HƯỚNG DẪN SỬ DỤNG PHẦN MỀM AUTODESK INVENTOR 2014 Chủ biên: TS. Nguyễn Đứ

Microsoft Word - auto_complete_trong_android.docx

Hướng dẫn sử dụng dịch vụ FTP

Microsoft Word - single_fragment_trong_android.docx

(untitled)

Phương pháp biểu diễn thuật toán Phương pháp biểu diễn thuật toán Bởi: Khoa CNTT ĐHSP KT Hưng Yên Khi chứng minh hoặc giải một bài toán trong toán học

!#" $ % & % "' ()*+ % &, - %. /0 1 " & ".!% " ;:<5 = : 9HGI7 DKJLG?3 Proxy Pattern M!#" N &OP $ %QP % ' " /!#% P'.!#% "!#" P! "

IPSec IPSec Bởi: Phạm Nguyễn Bảo Nguyên Chúng ta đã biết khi ta sao chép dữ liệu giữa 2 máy hoặc thông qua mạng VPN để nâng cao chế độ bảo mật người q

Chiến lược kiểm thử Chiến lược kiểm thử Bởi: Khoa CNTT ĐHSP KT Hưng Yên Các công đoạn kiểm thử Quá trình kiểm thử có thể chia làm các giai đoạn : Kiểm

mid1-f18-written-sol-master

Microsoft Word - Huong dan cau hinh mikrotik - Viet Tuan UNIFI.vn

Microsoft Word - activity_trong_android.docx

Stored Procedures Stored Procedures Bởi: Khoa CNTT ĐHSP KT Hưng Yên Trong những bài học trước đây khi dùng Query Analyzer chúng ta có thể đặt tên và s

TRƯỜNG Đ CK Joel Murach lay Harris TÜ SACH BẢN QUYỄN FPT Polytechnic P H P v ä MySQL Murach's PHP and MySQL Khởi động nhanh với PHP & MySQL

Lớp đối tượng String Lớp đối tượng String Bởi: Khuyet Danh Ngôn ngữ C# hỗ trợ khá đầy đủ các chức năng của kiểu chuỗi mà chúng ta có thể thấy được ở c

Microsoft Word - resource_trong_android.docx

Câu lệnh (statement) Câu lệnh (statement) Bởi: Khuyet Danh Trong C# một chỉ dẫn lập trình đầy đủ được gọi là câu lệnh. Chương trình bao gồm nhiều câu

Microsoft Word - google_map_trong_android.docx

Microsoft Word - grid_view_trong_android.docx

Microsoft Word - xu_ly_cookie_trong_servlet.docx

Screen Test (Placement)

sdfsdfsdfsfsdfd

Microsoft Word - TN DKTD.doc

Kiểm soát truy suất Kiểm soát truy suất Bởi: Khoa CNTT ĐHSP KT Hưng Yên Khái niệm Bảo mật thực chất là kiểm soát truy xuất [1]. Mục đích của bảo mật m

Microsoft Word - co_ban_ve_jquery.docx

Bài 7. Con trỏ Mục tiêu: 1. Luyện tập sử dụng con trỏ và địa chỉ của các biến 2. Sử dụng con trỏ khi thao tác với mảng. Giới hạn: không dùng các thư v

Microsoft Word - cau-truc-du-lieu-hang-doi.docx

Chương trình dịch

Co s? d? li?u (Database)

Invoice consultation CMA CGM Group Business Thông báo hóa đơn CMA-CGM ANL CNC

Microsoft Word - mot_so_ung_dung_android_co_ban.docx

Chương trình dịch

TCVN 11391:2016 MỤC LỤC 1 Phạm vi áp dụng Tài liệu viện dẫn Thuật ngữ, định nghĩa và các từ viết tắt Thuật ngữ và định nghĩa...

Chủ đề :

SL - LED STREET LIGHT MODEL COB CHIP BẢNG GIÁ LED I.O.T GENERATION Chiết khấu với giá tốt từ 25% - 50% tùy theo nhóm đối tượng khách hàng Vui lòng liê

Microsoft Word - client_request_trong_servlet.docx

Chương trình dịch

MCSA 2012: Distributed File System (DFS) MCSA 2012: Distributed File System (DFS) Cuongquach.com Ở bài học hôm nay, mình xin trình bày về Distributed

KIỂM TOÁN NHÀ NƯỚC CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự do - Hạnh phúc Số: 1173/QĐ-KTNN Hà Nội, ngày 27 tháng 7 nă

Lỗi thường gặp ở Windows Lỗi thường gặp ở Windows Bởi: Vien CNTT DHQG Hanoi LỖI THƯỜNG GẶP Ở WINDOWS Khi hệ thống gặp bất ổn, hệ điều hành (HĐH) sẽ cố

Bài thực hành 6 trang 106 SGK Tin học 10

Microsoft Word - Lab09 - WebSieuthisach.doc

Chuyên đề

JOURNAL OF SCIENCE OF HNUE Educational Science in Mathematics, 2014, Vol. 59, No. 2A, pp This paper is available online at

SUBMIT SHIPPING INTRUCTIONS (SI) CMA CGM GROUP EBUSINESS Login to ebusiness on the CMA CGM Group websites: CMA-CGM ANL https:

(Microsoft Word - 1. L\352 Van C?m 1-10 NC.doc)

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC KHOA HỌC XÃ HỘI VÀ NHÂN VĂN NGUYỄN THỊ THANH LOAN BƢỚC ĐẦU THIẾT KẾ NGỮ

Chöông 1 (tt.)

Tạp chí KHOA HỌC ĐHSP TPHCM Số 54 năm 2014 PHƯƠNG PHÁP SỬ DỤNG TRÒ CHƠI TRONG DẠY HỌC NGUYỄN THỊ BÍCH HỒNG * TÓM TẮT Bài viết trình bày phương pháp sử

(Tái bản lần thứ hai)

Huong dan su dung phan mem Quan ly chat luong cong trinh GXD

Microsoft PowerPoint - OOP4-OperatorOverloading_new.ppt

Microsoft Word - van-ban-van-hoc.docx

Slide 1

Bản ghi:

Kế thừa và đa hình

Nội dung Đa hình upcasting liên kết động Lớp và phương thức trừu tượng Đa kế thừa và giao diện Một cách lập trình tổng quát Nguyễn Việt Hà Kế thừa và đa hình

Tài liệu tham khảo Thinking in Java, chapter 7, 8 Java how to program, chapter 9 Nguyễn Việt Hà Kế thừa và đa hình

Polymorphism (đa hình) là gì Polymorphism: nhiêu hình thức, nhiêu kiêu tồn tại Đa hình trong lập trình đa hình hàm: hàm trùng tên, phân biệt bởi danh sách tham số đa hình đối tượng nhìn nhận đối tượng theo nhiều kiểu khác nhau các đối tượng khác nhau giải nghĩa thống điệp theo cách thức khác nhau Nguyễn Việt Hà Kế thừa và đa hình 4

Up casting Up casting là khả năng nhìn nhận đối tượng thuộc lớp dẫn xuất như là một đối tượng thuộc lớp cơ sở dùng đối tượng của lớp dẫn xuất để truyền tham số dùng đối tượng của lớp dẫn xuất làm thuộc tính Nguyễn Việt Hà Kế thừa và đa hình

Person -name -birthday +setname() +setbirthday() Person p; Employee e = new Employee(); p = (Person) e; p.setname(...); p.setsalary(...); // compile error Employee -salary +setsalary() +getdetail() Nguyễn Việt Hà Kế thừa và đa hình 6

String teamlnfo(person pi, Person p2) { return "Leader: " + pl.getname() + "; member: " + p 2.getName(); Employee el, e2; Manager ml, m2; System.out.printIn(teamlnfo(el, e2)); teamlnfo (ml, m2); teamlnfo (ml, e2) ; Nguyễn Việt Hà Kế thừa và đa hình

class Manager extends Employee { Employee assistant; public void setassistant(employee e) { assistant = e; Manager junior, senior; senior.setassistant(junior); Nguyễn Việt Hà Kế thừa và đa hình 8

Đa hình và liên kết động Khả nâng giải nghĩa các thông điệp theo các cách thức khác nhau Person pl = new Person 0; Person p2 = new Employee 0; Person p3 = new Manager 0; System.out.printIn(pi.getDetail()); System.out.printIn(p2.getDetail()); System.out.printIn(p3.getDetail()); Nguyễn Việt Hà Kế thừa và đa hình 9

class EmployeeList { Employee list[]; public void add(employee e) {... public void p r i n t () { for (int i=0; i<list.length; i++) { System.out.printIn(list[i].getDetail()); EmployeeList list = new EmployeeList(); Employee el; Manager ml; list.add(el); list.add(ml); list.print(); Nguyễn Việt Hà Kế thừa và đa hình 10

Liên kêt tĩnh và liên kêt động Static and dynamic binding Liên kết tĩnh: lời gọi hàm (phương thức) được quyết định khi biên dịch, do đó chỉ có một phiên bản của chương trình con được thực hiện J m m m ưu điểm về tốc độ Liên kết động: lời gọi phương thức được quyết định khi thực hiện, phiên bản của phương thức phù hợp với đối tượng được gọi Java mặc định sử dụng liên kết động Nguyễn Việt Hà Kế thừa và đa hình 11

Down casting Employee e = new Employee(); Person p = e; //up casting Employee ee = (Employee)p; Manager m = (Manager)ee; // down casting run-time error Person p2 = new Manager 0; Employee e2 = (Employee) p2; Nguyễn Việt Hà Kế thừa và đa hình 12

Toán tử in s ta n c e o f public class Employee extends Person { public class Student extends Person { public dosomthing(person e) { if (e instanceof Employee) {... else if (e instanceof student) {... else {... Nguyễn Việt Hà Kế thừa và đa hình 13

Private method class Base { private void f() { System.out.printIn("base f() public void show() { f () public class Derived extends Base { private void f() { System.out.printIn("derived f ()"); public static void main(string args[]) { Derived d = new Derived(); Base b = d; b.show(); Nguyễn Việt Hà Kế thừa và đa hình

Copy constructor^) class Employee extends Person double salary; Employee(Employee e) { super(e); salary = e.salary; Nguyễn Việt Hà Kế thừa và đa hình

Gọi phương thức trong constructor class Shape { public Shape() { draw(); public void draw() { class Point extends Shape { protected int x, y; public Point(int xx, int yy) { x = xx; y = yy; public void draw() { System.out.println("(" + x + + y + Point p = new Point(10, 10); Nguyễn Việt Hà Kế thừa và đa hình 1

Lớp trừu tượng Chúng ta có thể tạo ra các lớp cơ sở để tái sử dụng mà không muốn tạo ra đối tượng thực của lớp các lớp Point, Circle, Rectangle chung nhau khái niệm cùng là hình vẽ Shape Giải pháp là khái báo lớp trừu tượng không thể tạo đối tượng Nguyễn Việt Hà Kế thừa và đa hình

abstract class Shape { protected int x, y; Shape(int _x, int _y) { x = x; y = _y; Shape si = new Circle(); Shape s = new Shape(10, 10) // compile error Nguyễn Việt Hà Kế thừa và đa hình 18

class Circle extends Shape { int republic Circle(int _x, int y, int _r) { super(_x, _y); r = _r; Nguyễn Việt Hà Kế thừa và đa hình 19

Phương thức trừu tượng Để thống nhất giao diện, có thể khai báo các phương thức tại lớp cơ sở nhưng được cài đặt thực tế tại lớp dẫn xuất I I ỉ các lớp dẫn xuất khác nhau có cách cài đặt khác nhau Phương thức trừu tượng bắt buộc phải định nghĩa lại tại lớp dẫn xuất Nguyễn Việt Hà Kế thừa và đa hình

abstract class Shape { protected int x, y; public void moveto(int xl, int yl) { erase () ; x = xl; y = yl; draw(); abstract public void erase(); abstract public void d r a w (); Nguyễn Việt Hà Kế thừa và đa hình 21

class Circle extends Shape { int r ; public Circle(int _x, int _y, int _r) { super(_x, _y); r = _r; draw(); public void erase() { System.out.println("Erase at (" + x + + y + public void draw() { System.out.println("Draw at (" + x + + y + Nguyễn Việt Hà Kế thừa và đa hình 22

Giao diện (Interface) Interface là mức trừu tượng cao hơn lớp trừu tượng Bao gồm phương thức trừu tượng hằng số (static final) mặc định là public CÚ pháp: từ khóa interface và implements Nguyễn Việt Hà Kế thừa và đa hình 23

interface Action { void moveto(int x, int y) ; void erase(); void d r a w (); class Circle1 implements Action { int x, y, r; Circlel(int _x, int _y, int _r) {... public void erase() {... public void d raw() {... public void moveto(int xl, int yl) {... Nguyễn Việt Hà Kế thừa và đa hình

Lớp trừu tượng cài đặt giao diện abstract class Shape implements Action { protected int x, y; public Shape() {... public Shape (int _x, int y) {... public void moveto(int xl, int yl) { erase(); x = xl; y = y i; draw(); Nguyễn Việt Hà Kế thừa và đa hình

Đa kế thừa Java không cho phép đa kế thừa từ nhiều lớp cơ sở đảm bảo tính dễ hiểu hạn chế xung đột CÓ thể cài đặt đồng thời nhiều giao diện Abstract or Concrete Base ơass I nterface 1 :... ă... interface n..'ẫ Base Class Methods interfaoe 1 interfaœ 2 interface n Nguyễn Việt Hà Kế thừa và đa hình 26

class ImageBuffer { class Animation extends ImageBuffer implements Action { public void erase() {... public void draw() {... public void moveto() {... Nguyễn Việt Hà Kế thừa và đa hình

interface CanFight { void fight(); interface CanSwim { void swim(); interface CanFly { void fly(); class ActionCharacter { public void fight() { Nguyễn Việt Hà Kế thừa và đa hình 28

class Hero extends ActionCharacter implements CanFight, CanSwim, CanFly { public void swim() { public void fly() { public class Adventure { public static void t (CanFight x) { x.fight(); public static void u(canswim x) { x.swim(); public static void v(canfly x) { x.fly(); public static void w(actioncharacter x) { x.fight(); public static void main(string[] args) { Hero h = new Hero(); t (h); // Treat it as a CanFight u(h); // Treat it as a CanSwim v(h); // Treat it as a CanFly w(h); // Treat it as an ActionCharacter Nguyễn Việt Hà Kế thừa và đa hình

Xung đột (1) interface II { void f(); interface 12 { int f (int i); interface 13 { int f(); class c { public int f() { return 1; class C2 implements II, 12 { public void f() { public int f (int i) { return 1; class C3 extends c implements 12 { public int f (int i) { return 1; // overloaded // overloaded Nguyễn Việt Hà Kế thừa và đa hình

Xung dôt (2) class C4 extends C implements 13 { // Identical, no problem: public int f() { return 1; class C5 extends C implements II { interface 14 extends II, 13 { Nguyễn Việt Hà Kế thừa và đa hình 31

Mà rông Icyp trùpu tipgng và giao diên interface II { interface 12 { interface 13 extends II, 12 { abstract class Al { abstract class A2 extends Al implements II, 12 { Nguyễn Việt Hà Kế thừa và đa hình

Abstract class vs. Interface Lớp trừu tượng có thể có phương thức thực và thuộc tính Interface hỗ trợ đa kế thừa Cái gì là bất biến? Nguyễn Việt Hà Kế thừa và đa hình

H ư ớ n g tớ i lậ p tr ìn h tô n g q u á t Generic programming Tổng quát hóa chương trình để có thể hoạt động với các kiểu dữ liệu khác nhau, kể cả các kiểu dữ liệu trong tương lai thuật toán đã xác định Ví dụ, kiểu ngăn xếp C: dùng con trỏ void n C++: dùng template Java: lợi dụng upcasting và lớp gốc Object Java 1.5: template Nguyễn Việt Hà Kế thừa và đa hình 34

class MyStack { public void push(object obj) public Object pop() {... MyStack s = new MyStack(); Point p = new P oint(); Circle c = new CircleO; s.push (p) ; s.push(c); Circle cl = (Circle) s.popo; Point pl = (Point) s.popo; Nguyễn Việt Hà Kế thừa và đa hình

Local copy Có nhu cầu sao chép các đối tượng Sạo chép khi chuyền tham số để tránh sửa đổi đối tượng gốc Làm thế nào để sao chép đối tượng mà không biết rõ kiểu (lớp) thực sự của nó? Sử dụng copy constructor? Sử dụng phương thức copy? Interface Cloneable và phương thức clone () Nguyễn Việt Hà Kế thừa và đa hình

Copy constructor class Base { public Base() { public Base(Base b) {... public String print() { return "base class"; class Derived extends Base { public Derived() { public Derived(Derived d) { super(d); public String print() { return "derived class Nguyễn Việt Hà Kế thừa và đa hình

Local copy sir dung copy constructor public class TestCopy { static void copy(derived d) { Derived dl = new Derived(d); System.o u t.println(dl.print()); static void copy2(base b) { Base bl = new Base(b); System.out.println(bl.print()); public static void main(string args[]) { Derived d = new Derived(); copy(d); copy2 (d); Nguyễn Việt Hà Kế thừa và đa hình

Bài tập Sử dụng kiến thức về kế thừa và đa hình để thiết kế các lớp sau Các lớp đối tượng hình học cơ sở Point, Circle, Rectange,... Lớp Graphics là một hình phức hợp do người dùng định nghĩa (là một tập các hình cơ sở hoặc phức hợp khác) Yêu Cầu: các lớp phải sử dụng giao diện như nhau: move(), draw(),... Nguyễn Việt Hà Kế thừa và đa hình 39

Composite design pattern Nguyễn Việt Hà Kế thừa và đa hình 40