2 Chương 8: Tiếntớitư duy hướng đốitượng Nộidung chương 8 8.1 Đặtvấn ₫ề 8.2 Giớithiệuvídụ chương trình mô phỏng 8.3 Tư duy "rất" cổ₫iển 8.4 Tư duy hướng hàm 8.5 Tư duy dựatrên₫ốitượng (object-based) 8.6 Tư duy thựcsự hướng ₫ốitượng Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m CÁCH TƯ DUY MỘT CÁCH LOGIC TRONG LẬP TRÌNH NỘI DUNG BÀI HỌC : 3 Chương 8: Tiếntớitư duy hướng đốitượng 8.1 Đặtvấn ₫ề „Designing object-oriented software is hard, and designing reusable object-oriented software is even harder It takes a long time for novices to learn what object-oriented design is all about. Exprienced designers evidently know something inexperienced ones don't One thing expert designers know not to do is solve every problem from first principles. Rather, they reuse solutions that have worked for them in the past. When they find a good solution, they use it again and again. Such experience is part of what makes them experts. Consequently, you'll find recurring patterns of classes and communicating objects in many object-oriented systems. These patterns solve specific design problems and make object-oriented design more flexible, elegant, and ultimately reusable “ Erich Gamma et. al.: Design Patterns: Elements of Reusable Object- Oriented Software , Addison-Wesley, 1995. Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m 4 Chương 8: Tiếntớitư duy hướng đốitượng 8.2 Phầnmềmmôphỏng kiểuFBD StaticGain Limiter Integrator Sum Scope 1(t) Nhiệmvụ: Xây dựng phầnmềm ₫ể hỗ trợ mô phỏng thờigianthựcmột cách linh hoạt, mềmdẻo, ₫áp ứng ₫ượccácyêucầucủatừng bài toán cụ thể Trướcmắtchưacầnhỗ trợ tạo ứng dụng kiểukéothả bằng công cụ₫ồhọa Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m 5 Chương 8: Tiếntớitư duy hướng đốitượng 8.3 Tư duy rấtcổ₫iển // SimProg1.cpp #include <iostream.h> #include <conio.h> #include <windows.h> void main() { double K =1,I=0, Ti = 5; double Hi = 10, Lo = -10; double Ts = 0.5; double r =1, y=0, e, u, ub; cout << "u\ty"; while (!kbhit()) { e = r-y; // Sum block u = K*e; // Static Gain ub = max(min(u,Hi),Lo); // Limiter I += ub*Ts/Ti; // Integrator state y = I; // Integrator output cout << '\n' << u << '\t' << y; cout.flush(); Sleep(long(Ts*1000)); } } Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m 6 Chương 8: Tiếntớitư duy hướng đốitượng Vấn ₫ề? Phầnmềmdướidạng chương trình, không có giá trị sử dụng lại Rấtkhóthay₫ổihoặcmở rộng theo yêu cầucụ thể củatừng bài toán Toàn bộ thuật toán ₫ược gói trong mộtchương trình => khótheodõi, dễ gây lỗi, không bảovệ₫ượcchất xám Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m 7 Chương 8: Tiếntớitư duy hướng đốitượng // SimProg2.cpp #include <iostream.h> #include <conio.h> #include <windows.h> #include "SimFun.h" void main() { double K = 5.0, double Ti = 5.0; double Hi = 10, Lo = -10; double Ts = 0.5; double r =1, y=0, e, u, ub; cout << "u\ty"; while (!kbhit()) { e = sum(r,-y); // Sum block u = gain(K,e); // Static Gain ub= limit(Hi,Lo,u); // Limiter y = integrate(Ti,Ts,ub); // Integrator output cout << '\n' << u << '\t' << y; cout.flush(); Sleep(long(Ts*1000)); } } 8.4 Tư duy hướng hàm Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m . 2 Chương 8: Tiếntớitư duy hướng đốitượng Nộidung chương 8 8 .1 Đặtvấn ₫ề 8.2 Giớithiệuvídụ chương trình mô phỏng 8.3 Tư duy "rất" cổ₫iển 8.4 Tư duy hướng hàm 8.5 Tư duy dựatrên₫ốitượng (object-based) 8.6. V i e w e r w w w . d o c u - t r a c k . c o m CÁCH TƯ DUY MỘT CÁCH LOGIC TRONG LẬP TRÌNH NỘI DUNG BÀI HỌC : 3 Chương 8: Tiếntớitư duy hướng đốitượng 8 .1 Đặtvấn ₫ề „Designing object-oriented software. Tiếntớitư duy hướng đốitượng 8.3 Tư duy rấtcổ₫iển // SimProg1.cpp #include <iostream.h> #include <conio.h> #include <windows.h> void main() { double K =1, I=0, Ti = 5; double Hi = 10 ,