ao + language
Trang 4| comments
Trang 6
+ control statements
=» condition: if, switch
= loop: for, while, do while
=» jump: goto, return, break, continue
Trang 7
4 common functions
a string: strcpy, strcat, strlen, strcmp
=» math: cos, sin, pow, sart, exp, log, rand
Trang 84 comon libraries
string : both C and C+ +
memory : both C and C++ stdlib : both C and C++
stdio : both C and C++ conio : both C and C++
math: both C and C++
Trang 9native to C++
=» the pointer this
= the type reference =» the concept class
Trang 10Object Oriented Programming
with C++
Trang 13
4 Using Turbo C+ +
= Starting the tools =» create a new file = save the file
=» compile the file =» run the file
Trang 14
4 Using Microsoft Visual C+ +
= project is a collections of file
a Start the tool
=» create a new project = Create a file
=» compile the file
Trang 164 recommended books
= Pham Van At - C++ va lap trinh
hướng đối tượng
„ Nguyễn Cẩn - Tự học ngôn ngữ lập
Trang 18Mt Glass declaration
Trang 19
4 contents
=» structure with member functions a inline and external definitions
=» Standalone and member functions =» declaration vs definition
= levels of hidding
Trang 20
4 contents (1)
= constructor
= Oestructor
=» the pointer this
= array of objects (initials)
=» dynamic object: new, delete, *, ->
Trang 214 From c struct to c++ struct struct SinhVien { char Ten| 50]; int NamSinh: double dk1, dk2;
int Tuoi() { NamSinh - getCurYear(); } double DIB() { return (dk1+ dk2)/2; }
Trang 224 From c++ struct to c++ class class SinhVien { private: char Ten[50]; int ns; double dk1, dk2; public:
int Tuoi() { ns - getCurYear(); }
double DIB() { return (dk1+dk2)/2; }
Trang 23Standalone and member
4 functions
=» standalone functions belong to no class, eg cos, sin, printf, scanf,
=» member functions belong to a specific class, eg
=» the definition of member functions has a LITTLE different from that of
Trang 25
4 declaration vs definition
= declaration tells the existence, the type or the prototypes of the object
Trang 28
5 Constructor
=» Constructor is automatically called when the object is created / constructed
=» constructor Is used to Initiate data members
Trang 29
4 Destructor
= destructor is automatically called when the object is destroyed / destructed
= destructor is designed to clear dynamic
members and close files and devices
Trang 30
4 Debugger (class)
=» constructor: print the message = destructor: print the message
Trang 31
4 IntegerList (class)
=» constructor: initiate members =» Oestructor: clear the array
= append: add a number into the list = sort: sort the list
Trang 32
4 string (class)
=» constructor: initiate the pointer = destructor: free the pointer
Trang 33
4 text1024 (class)
=» contains at most 1024 lines
= print: print the text
=» save: save the text to a file
= append: add a line to the text
Trang 34
4 text (class)
a» with unlimited number of line
Trang 35
4 The pointer this
=» Io discern the data member from the
member function arguments
=» Can be known as an implicit argument
of anormal member function
a Static member does not have the
Trang 364 example of using this
Trang 37
4 Array of objects
=» Declare an object array (Same as C) a Initiate an object array
=» Scan through the array
=» The constructor is called n times
Trang 38
+ Initiate an array
=» The requirements
=» constructor with args
=» constructor without args
Trang 404 Dynamic object =» Ihe object that must be created before being used
=» Create the object / new
=» Destroy the object / delete =» The operator arrow
Trang 424 Array of dynamic objects
=» constructing the array =» scanning the array
Trang 45
j¡ TP
=» Static member function = Virtual member function
Trang 46cdplex - class declaration
cdp1ex - class declaration
(Từ Trung Hiéu, apr-04-2006)
vector (vec to’)
Viết lớp vector gồm
e các thành phan x, y, z,
e ham getLength tra vé d6 dai Euclide cua véc tơ Trong ham main,
e khai bao mang gém 10 phần tử các đối tượng kiêu vector, e_ tiến hành nhập các giá trị cho các véc tơ,
® và Inra các tọa độ cũng như độ dài của các véc tơ, mỗi véc tơ in trên một dòng
student (sinh viên)
Viết lớp student gồm
e_ name kiểu chuỗi dài 50 ký tự,
e vearBirth kiểu int,
e fsem kiéu double,
e ssem kiéu double,
e ham getAge tra vé gid tri 2006-yearBirth,
e ham getGpa tra vé gid tri trung bình của fsem và ssem Trong ham main,
e khai bdo mang g6m 10 phan tir kiéu student,
e©_ tiến hành nhập giá trị cho các thành viên,
e inra cdc thong tin name, getAge, getGpa (mỗi sinh viên trên một dòng)
matrix (ma trận)
Viết lớp matrix gom cac thanh phan
e width kiéu int, height kiéu int,
e mang pix hai chiéu 8x8 c6 cdc phan tir kiéu long,
e ham save ghi ma tran ra tap tin nhi phan,
e ham load tai thong tin tu tap tin nhị phân Trong ham main,
e khai bao mt va mt! kiéu matrix,
e_ tiến hành nhập thông tin width (từ 1 tới 8) va height (ttr 1 tới 8) và các phần tử e ghi ma tran mt xu6ng tap tin "matran.dat" bang save,
e doc théng tin lén ma tran mtl tl tap tin "matran.dat” vừa tạo,
e va in cac thong tin mtl ra man hinh
date (ngay thang)
Viết lớp date có các thành phan
Trang 47cdplex - class declaration
e day kiéu int
e month kiéu int
e year kiéu int
e ham cmp tra vé gid trị so sánh với một ngày khác Trong hàm maIn e Khai bdo dl va d2 kiéu date e Nhập các giá trị cho dI và d2 e In ra kết quả ngày d1 đứng trước hay sau d2 string (chuỗi) Viết lớp chuỗi gồm
e data kiéu mang ky tự gồm 128 ký tự e ham assign gan gid tri chuỗi cho data e ham concat găn thêm chuỗi mới vào data Trong hàm maIn
e_ Khai báo chuỗi
e_ gọi hàm assign với gia tri "Hanoi" e goi ham concat v6i gia tri "Vietnam" e inra két qua data
CatalogFile (tap tin danh muc)
Viét tap tin danh muc g6m
e hàm open mở và tìm tập tin dau tiên e hàm close đóng danh mục đang mở e hàm ¡isEnd xác định còn tập tin hay khơng e©_ hàm MoveNext chuyền tới mục tiếp theo
e_ hàm GetFileName trả về tên của mục hiện tại e ham GetFileSize tra vé cỡ của mục hiện tại
e hàm IsFileCatalog xác định mục hiện tại có phải danh mục con
Trong hàm maIn
e Khai bao cf kiéu CatalogFile
e m6 tap tin cf bang cách goi open
e lap lai viéc in ra gid tri cua GetFileName, GetFileSize,
và chuyển tới mục tiếp theo cho tới khi IsEnd trả về giá trị đúng e_ đóng tập tin cf bằng cách gọi close
Trang 48
" Aggregation
Trang 49
4 contents
=» understand the concept
m commonly used classes: intlist, stringlist =» construction / destruction in aggreggation
=» destruction of container that handles dynamics =» nested class and access path
a linking vs handling =» hiding / messaging
Trang 50
+ Commonly used classes
Trang 51
4 The number list (static) a Static array =» constructor: no item at first =» destructor: no need
» Additem: advance counter and copy
=» Deleteltem: mass copy =» LoadList:
Trang 52
4 The number list (dynamic)
=» dynamic array
=» constructor: the array and the counter = destructor: free the array
=» additem: alloc / realloc
= delete: realloc / free a Save List:
Trang 53
4 The string list (static)
commonly used class, eg order, payroll static array of string
constructor: initiate the counter destructor: free strings
Addstring: advance the counter
DeleteString: mass copy
saveList: to a file
Trang 54
4 The string list (dynamic)
» Dynamic array of string
=» constructor: initiate the counter and the array =» destructor: free strings and the array
=» AddString: alloc / realloc =» DeleteString: realloc / free
a SaveList: to a file
Trang 55
4 container of objects
the static array of objects
Trang 56container of dynamic objects 4 (static array)
= Static array of pointer
=» constructor: clear the counter
=» destructor: free all dynamic objects =» additem: add a dynamic object
=» deleteltem: mass copy of pointer a Save List:
=» LoadList:
Trang 57container of dynamic objects
4 (dynamic array)
=» dynamic array of pointer
=» constructor: initiate the array and the counter =» destructor: clear objects and the array
» additem: alloc / realloc =» deleteltem: realloc / free a» SaveList:
=» LoadList:
Trang 59
nested class / access path
» Aclass is allowed to contain another class as Its member
=» eg, student contains date
m A class can not contains itself or another class mutually
=» eg, hen contains egg, egg contains hen
Trang 60
4 Construction / Destruction
=» When the container is created
=» The constructor of the container does =» in case there is no default constructor =» When the container is destroyed
Trang 61
Bp Pestruction of dynamic objects
=» The container may have the statement delete in its destructor
=» Remember to CLOSE all opened devices and CLEAR all dynamic allocated
variables under the control of the container on the destruction of It
=» Ihe container may refer to or link to It
Trang 62
4 linking vs handling
=» handle:
=» the disappearance of the container (handler) implies that of the member
= delete statements are required in the destructor
m link:
=» the container (linker) does not care about the existence of member objects
=» many linkers may share the same object
Trang 63
4 Hidding / Messaging
m |1he member class should not be revealed
=» Messages should be sent to the
Trang 64Multiplicity, Optionality, Cardinality =» Multiplicity: the container may handle one / many member
» eg, achild has one and only one mother =» amother may have more than one child
=» QOptionality: some containers may handle no object (optional), some containers must have one (required)
=» eg, student to country
» awoman may has no child, a mother must have at least one
=» Cardinality: more specific than multiplicity
Trang 66
=» diagram, connector, node
= picture, shape
= font, charpattern
=» category file: to display a directory
Trang 67cdp2ex - aggregation cdp2ex - aggregation (Tu Trung Hiéu, 08-04-2006) StringList
Viết lớp StringList trong đó oo -
e bién item gdm 100 phân tử kiêu chuôi, môi chuôi 30 phân tử e©_ biến card đếm số lượng
e ham Addltem(chuỗi) để thêm chuỗi vào danh sách
e_ hàm SaveList(tên tệp) để ghi danh sách xuống tệp tin nhị phân
e©_ hàm LoadList(tên tệp) để tải tệp từ tập tin nhị phân e_ hàm PrintList(tên tệp) để ghi danh sách ra tập tin văn bản Sử dụng lớp StringList trong ham main nhu sau
e Khai bao bién sl kiéu StringList e Thém chudi "Ha Noi” vao sl e Thém chudi "Hue" vao sl
e Thém chudi "Ho Chi Minh" vao sl
e Ghi danh sach sl vao tap tin "diaphuong.dat”
e Khai bdo bién Is kiểu StringList
e Doc ls tu tap tin "diaphuong.dat"
e In ls ra màn hình bằng cách gọi PrintList
IntegerList
Viết lớp IntegerList trong đó
e©_ có biến item gôm 100 phân tử kiểu long
e_ có biến card lưu số phân tử của danh sách
e©_ hàm Addltem(số nguyên) thêm vào danh sách một số nguyên e_ hàm SaveList(tên tệp) ghi danh sách xuống tệp tin nhị phân ® hàm LoadList(tên tệp) tải danh sách từ tệp tin nhị phân e hàm PrintList(tên tệp) ghi danh sách xuống tệp tin văn bản Su dung IntegerList trong ham main nhu sau
e Khai bdo L kiéu StringList
e thém vao L các số 1234, 2345, 3456, 4567 e_ ghi danh sách L xuống tập tin songuyen.dat
e©_ khai báo LA kiểu StringList
e đọc danh sách LA từ tap tin songuyen.dat
e in danh sách LA ra man hinh voi PrintList
Trang 68cdp2ex - aggregation
StudentList
Viết lớp StudentList trong đó
e_ có mảng item gồm 100 sinh viên (họ tên, tuổi, điểm trung bình) e_ có số phần tử card là số nguyên
e co ham AddStudent(tén, tudi, dtb) thém sinh vién vao danh sách
e c6 ham SaveList(tén tép) dé in danh sdch ra tap tin van ban
e c6 ham LoadList(tén tệp) dé đọc danh sách từ tập tin văn bản e_ có hàm tạo StudentListQ khởi tạo số phần tử ban đầu là rỗng
Sử dụng lớp trong hàm maIn
e_ Khai báo đối tượng sI kiểu StudentList
e thêm sinh viên "Nguyen Van A", 21 tuổi, 8.5 điểm vao sl
e_ thêm sinh viên "Tran Van B", 20 tuổi, 7.0 điểm vào sỉ
e_ thêm sinh viên "Pham Van C", 23 tuổi, 8.2 điểm vào sÏ
e chi danh sách sÏÌ ra tập tin "d:/dssv.txt”
Payroll
Hàng tháng, chị Thu Hương của công ty Thịnh Vượng thường phải tính bảng lương để trả cho các nhân viên
Bảng lương chị ta tính có dạng như sau Tên nhân viên Số ngày làm Số ngày nghỉ Lương Ký nhận Nguyễn Văn A 15 0 1'500'000 Pham Van B 13 2 1'200'000 Tran Van C 26 0 2'600'000 Hoang Dinh D 20 6 1°700'000
Trang 69cdp2ex - aggregation câu Đơn hàng dùng dé chuyên hàng đi và thanh toán với khách Đơn hàng có dạng như sau Tên hàng Số lượng Don gia Thanh tién Ban 80x140 1 400'000 400'000 Tu 986 1 950'000 950'000 Bàn phoóc nhỏ 500000 2'500000 Tổng sô tiên khách hàng phải trả 3'850'000 Hãy viết lớp cho phép thêm các mục hàng và in ra hóa đơn như trên Giả sử người lập trình sẽ dùng lớp như sau void main() { Order od; od.AddItem("Ban 80x140", 1, 400000); od.AddItem("Tu 986", 1, 950000); od.AddItem("Ban phooc nho”, 5, 500000); od.SaveList("d:/order.txt"); RectList
Trong quan ly thong tin dia ly, mỗi đối tượng địa lý trong bản đồ được biểu diễn băng hình chữ nhật, và tồn
bộ bản đơ là tập hợp các hình chữ nhật Môi khi người dùng ân chuột vào một hình chữ nhật, thông tin địa lý sẽ được hiện ra trong cửa sô bên cạnh
Hãy viết lớp RectList để lưu thông tin địa lý sao cho nguời dùng có thể thêm một hình chữ nhật vào danh sách, shi danh sách xuống tập tin, tải danh sách từ tập tin Người dùng có thể sử dụng lớp như sau
void main() { RectList rl;
rl.AddRect(1, 1, 10, 10, "Ha noi");