
Kỹ thuật lập trình - Chương 7: Quan hệ lớp
lượt xem 4
download

Tham khảo tài liệu 'chương 1 kỹ thuật lập trình chương 7: quan hệ lớp 0101010101010101100001', công nghệ thông tin phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Kỹ thuật lập trình - Chương 7: Quan hệ lớp
- Chương 1 Kỹ thuật lập trình Chương 7: Quan hệ lớp 0101010101010101100001 0101010101010101100001 StateController 0101010100101010100101 0101010100101010100101 1010011000110010010010 1010011000110010010010 start() 1100101100100010000010 1100101100100010000010 stop() 0101010101010101100001 0101010101010101100001 0101010100101010100101 © 2004, HOÀNG MINH SƠN 0101010100101010100101 1010011000110010010010+ B*u; y = A*x 1010011000110010010010 1100101100100010000010+ d*u; 1100101100100010000010 x = C*x LQGController 0101010101010101100001 0101010101010101100001 0101010100101010100101 0101010100101010100101 start() 1010011000110010010010 1010011000110010010010 stop() 1100101100100010000010 1100101100100010000010 12/3/2007
- Nội dung chương 7 7.1 Quan hệ lớp 7.2 Dẫn xuất và thừa kế 7.3 Hàm ảo và nguyên lý ₫a hình/₫a xạ 7.4 Ví dụ thư viện khối chức năng © 2004, HOÀNG MINH SƠN 2 Chương 7: Quan hệ lớp © 2007 AC - HUT
- 7.1 Phân loại quan hệ lớp Ví dụ minh họa: Các lớp biểu diễn các hình vẽ trong một chương trình ₫ồ họa — Rectangle Textbox — Square — Ellipse — Circle — Line — Polygon — Polyline — Textbox © 2004, HOÀNG MINH SƠN — Group 3 Chương 7: Quan hệ lớp © 2007 AC - HUT
- Biểu ₫ồ lớp (Unified Modeling Language) Quan hệ dẫn xuất © 2004, HOÀNG MINH SƠN Quan hệ chứa 4 Chương 7: Quan hệ lớp © 2007 AC - HUT
- Các dạng quan hệ lớp (meta model) C lass rela t io n sh ip A sso ciat io n G e n e r a liz a t io n D e pe nde n c y Ag g r eg at io n © 2004, HOÀNG MINH SƠN C o m p o s it io n 5 Chương 7: Quan hệ lớp © 2007 AC - HUT
- 7.2 Dẫn xuất và thừa kế Ví dụ xây dựng các lớp: Rectangle, Square và Textbox (sử dụng lớp Point) Lớp cơ sở Lớp dẫn xuất © 2004, HOÀNG MINH SƠN 6 Chương 7: Quan hệ lớp © 2007 AC - HUT
- Thực hiện trong C++: Lớp Point class Point { int X,Y; public: Point() : X(0), Y(0) {} Point(int x, int y): X(x), Y(y) {} int x() const { return X; } int y() const { return Y; } void move(int dx, int dy) { X += dx; Y += dy; } void operator*=(int r) { X *= r; Y *= r; © 2004, HOÀNG MINH SƠN } }; Point operator-(const Point& P1, const Point& P2) { return Point(P2.x()-P1.x(),P2.y()-P1.y()); } 7 Chương 7: Quan hệ lớp © 2007 AC - HUT
- Thực hiện trong C++: Lớp Rectangle #include #include #include "Point.h" typedef int Color; class Rectangle { Point TL, BR; Color LineColor, FillColor; int LineSize; public: Point getTL() const { return TL; } Point getBR() const { return BR; } void setTL(const Point& tl) { TL = tl; } © 2004, HOÀNG MINH SƠN void setBR(const Point& br) { BR = br; } Color getLineColor() const { return LineColor; } void setLineColor(Color c) { LineColor = c; } int getLineSize() const { return LineSize; } void setLineSize(int s) { LineSize = s; } 8 Chương 7: Quan hệ lớp © 2007 AC - HUT
- Rectangle(int x1=0, int y1=0, int x2=10, int y2=10) : TL(x1,y1), BR(x2,y2), LineColor(256),FillColor(0) {} Rectangle(const Point& tl, const Point& br, Color lc, Color fc) : TL(tl), BR(br), LineColor(lc), FillColor(fc) {} void draw() { std::cout
- Thực hiện trong C++: Lớp Square #include "Rectangle.h" class Square : public Rectangle { public: Square(int x1=1, int y1=0, int a=10) : Rectangle(x1,y1,x1+a,y1+a) {} void resize(int r) { Rectangle::resize(r,r); } }; © 2004, HOÀNG MINH SƠN 10 Chương 7: Quan hệ lớp © 2007 AC - HUT
- Thực hiện trong C++: Lớp Textbox #include "Rectangle.h" enum AlignType { Left, Right, Center}; class TextBox : public Rectangle { std::string Text; AlignType Align; public: TextBox(const string& text = "Text") : Text(text), Align (Left) {} TextBox(const Point& tl, const Point& br, Color lc, Color fc, const string& text): Rectangle(tl,br,lc,fc), Text(text), Align(Left) {} void draw() { © 2004, HOÀNG MINH SƠN Rectangle::draw(); std::cout
- Chương trình minh họa #include "Rectangle.h" #include "Square.h" #include "TextBox.h" #include void main() { Rectangle rect(0,50,0,100); Square square(0,0,50); TextBox text("Hello"); rect.draw(); std::cout
- getch(); std::cout
- Truy nhập thành viên Các hàm thành viên của lớp dẫn xuất có thể truy nhập thành viên "protected" ₫ịnh nghĩa ở lớp cơ sở, nhưng cũng không thể truy nhập các thành viên "private" ₫ịnh nghĩa ở lớp cơ sở Phản ví dụ: Rectangle rect(0,0,50,100); Square square(0,0,50); square.TL = 10; Lớp dẫn xuất ₫ược "thừa kế" cấu trúc dữ liệu và các phép toán ₫ã ₫ược ₫ịnh nghĩa trong lớp cơ sở, nhưng không nhất thiết có quyền sử dụng trực tiếp, mà phải qua các phép toán (các hàm công cộng hoặc hàm public) © 2004, HOÀNG MINH SƠN Quyền truy nhập của các thành viên "public" và "protected" ở lớp dẫn xuất ₫ược giữ nguyên trong lớp cơ sở 14 Chương 7: Quan hệ lớp © 2007 AC - HUT
- Thuộc tính truy nhập kế thừa Thuộc tính kế thừa của lớp dẫn xuất Y Thuộc tính truy nhập của class Y: private X class Y: public X các thành viên lớp cơ sở X private Được kế thừa nhưng các thành viên của X không thể truy nhập trong Y Các thành viên của X Các thành viên của X sẽ trở thành các sẽ trở thành các thành protected thành viên private viên protected của Y của Y và có thể ₫ược và có thể truy nhập truy nhập trong Y trong Y © 2004, HOÀNG MINH SƠN Thành viên của X sẽ Thành viên của X sẽ trở thành thành viên trở thành thành viên public private của Y và có public của Y và có thể thể truy nhập trong Y truy nhập trong Y 15 Chương 7: Quan hệ lớp © 2007 AC - HUT
- Ví dụ void func2(int a, int b) {...} int xy; class X { private: int x1; protected: int x2; public: int x3; int xy; X(int a, int b, int c) { x1 = a; x2 = b; x3 = xy = c; } © 2004, HOÀNG MINH SƠN void func1(int, int); void func2(int, int); }; void X::func1(int i, int j) {...} void X::func2(int k, int l) {...} 16 Chương 7: Quan hệ lớp © 2007 AC - HUT
- class Y:public X { private: int y1; public: int y2; int xy; Y(int d, int e, int f, int g, int h):X(d, e, f) { y1 = g; y2 = xy = h; } void func2(int, int); }; void Y::func2(int m, int n) { int a, b; x1 = m; //Error, x1 is private in the basic class X x2 = m; © 2004, HOÀNG MINH SƠN x3 = m; xy = m; X::xy = m; ::xy = m; y1 = n; y2 = n; 17 Chương 7: Quan hệ lớp © 2007 AC - HUT
- func1(a,b); OK, X::func1(...) X::func2(a,b); OK, X::func2(...) ::func2(a,b) } void f() { const int a = 12; Y objY(3, 4, 5, 6, 7); objY.x1 = a; //Error, x1 is private objY.x2 = a; //Error, x2 is protected objY.x3 = a; objY.xy = a; objY.y1 = a; //Error, y1 is private objY.y2 = a; objY.X::xy = a; objY.func1(a, a); objY.func2(a, a); © 2004, HOÀNG MINH SƠN } 18 Chương 7: Quan hệ lớp © 2007 AC - HUT
- Chuyển ₫ổi kiểu ₫ối tượng Một ₫ối tượng hay con trỏ, hoặc tham chiếu ₫ối tượng kiểu lớp dẫn xuất sẽ có thể ₫ược chuyển ₫ổi kiểu tự ₫ộng về kiểu lớp cơ sở (nếu ₫ược kế thừa public) nhưng không ₫ảm bảo theo chiều ngược. Ví dụ: class X { ... X(...){...} ... }; class Y:public X { ... Y(...):X(...){...} ... }; X objX(...); Y objY(...); X* xp = &objX; //OK X* xp = &objY; //OK Y* yp = &objX; //Error Y* yp = (Y*)&objX; //OK, but not guaranteed! © 2004, HOÀNG MINH SƠN Chuyển ₫ổi kiểu tự ₫ộng cho ₫ối tượng có kiểu lớp cơ sở sang kiểu lớp dẫn xuất sẽ không thể thực hiện vì không ₫ảm bảo ₫ược quyền truy nhập của các thành viên của lớp cơ sở, chắc chắn không ₫ược nếu kế thừa private. 19 Chương 7: Quan hệ lớp © 2007 AC - HUT
- Chuyển ₫ổi kiểu ₫ối tượng Ví dụ: class X { public: int x; }; class Y:private X { }; void f() { Y objY; X *xp; © 2004, HOÀNG MINH SƠN xp = &objY; //Error xp = (X*) &objY; xp->x = 5; } 20 Chương 7: Quan hệ lớp © 2007 AC - HUT

CÓ THỂ BẠN MUỐN DOWNLOAD
-
Kỹ thuật lập trình
114 p |
798 |
323
-
Tuyển tập 250 bài tập kỹ thuật lập trình C
343 p |
582 |
124
-
Kỹ thuật lập trình - Ngôn ngữ lập trình C - Concept
15 p |
205 |
59
-
Đề thi học kỳ I môn Kỹ thuật lập trình cơ bản
14 p |
503 |
47
-
Kỹ thuật lập trình - Ngôn ngữ lập trình C - Hàm
20 p |
143 |
26
-
Kỹ thuật lập trình - Ngôn ngữ lập trình C - Hàm (tt)
5 p |
150 |
24
-
Kỹ thuật lập trình - Ngôn ngữ lập trình C - Biến, Toán tử và kiểu dữ liệu
6 p |
158 |
19
-
Đề thi học kỳ 1 môn Kỹ thuật lập trình cơ bản
14 p |
206 |
18
-
Tài liệu ôn thi tốt nghiệp môn cơ sở: Phần Kỹ thuật lập trình C - ThS. Trần Ngọc Bảo
4 p |
174 |
10
-
Đề thi môn Kỹ thuật lập trình
18 p |
153 |
8
-
Bài giảng Kỹ thuật lập trình - Bài 1: Tổng quan về kỹ thuật lập trình
65 p |
178 |
8
-
Bài giảng Ôn thi tốt nghiệp: Kỹ thuật lập trình - Trần Ngọc Bảo
50 p |
74 |
7
-
Bài giảng Kỹ thuật lập trình: Bài 1 - ThS. Trịnh Thành Trung
49 p |
62 |
6
-
Bài giảng Kỹ thuật lập trình: Tổng quan về KTLT - GV. Hà Đại Dương
29 p |
84 |
4
-
Đề thi kết thúc học phần học kì 3 môn Kỹ thuật lập trình năm 2023-2024 có đáp án
6 p |
2 |
1
-
Đề thi kết thúc học phần học kì 2 môn Kỹ thuật lập trình năm 2023-2024
6 p |
2 |
1
-
Đề thi kết thúc học phần học kì 2 môn Kỹ thuật lập trình năm 2023-2024 có đáp án
5 p |
2 |
1
-
Bài giảng Kỹ thuật lập trình: Giới thiệu môn học - ThS. Đặng Bình Phương
7 p |
14 |
0


Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn
