Bài giảng môn học Lập trình hướng đối tượng - Chương 2: Đối tượng và lớp

120 13 0
Bài giảng môn học Lập trình hướng đối tượng - Chương 2: Đối tượng và lớp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài giảng Lập trình hướng đối tượng - Chương 2 trang bị cho người học những kiến về đối tượng và lớp. Các nội dung chính trong chương này gồm có: Đối tượng và lớp, cài đặt lớp trong C++, thiết lập và huỷ bỏ đối tượng, giao diện và chi tiết cài đặt, các nguyên tắc xây dựng lớp, một số ví dụ về lớp. Mời các bạn cùng tham khảo.

Lập Trình Hướng Đối Tượng 45 LT+30TH Chương – Đối tượng Lớp Đối tượng lớp Cài đặt lớp C++ Thiết lập huỷ bỏ đối tượng Giao diện chi tiết cài đặt Các nguyên tắc xây dựng lớp Một số ví dụ lớp 2.1 Đối tượng lớp Ta định nghóa đối tượng "cái đó" có ý nghóa cho vấn đề ta quan tâm Đối tượng phục vụ hai mục đích: Giúp hiểu rõ giới thực cung cấp sở cho việc cài đặt máy Mỗi đối tượng có nét nhận dạng để phân biệt với đối tượng khác Nét nhận dạng mang ý nghóa đối tượng phân biệt với tồn vốn có chúng tính chất mà chúng có Chương Lớp Đối tượng lớp Các đối tượng có đặc tính tương tự gom chung lại thành lớp đối tượng Ví dụ Người lớp đối tượng Một lớp đối tượng đặc trưng thuộc tính, hoạt động (hành vi) Một thuộc tính (attribute) giá trị liệu cho đối tượng lớp Tên, Tuổi, Cân nặng thuộc tính Người Một thao tác (operation) hàm hay phép biến đổi áp dụng vào hay áp dụng đối tượng lớp Chương Lớp Đối tượng lớp Cùng thao tác áp dụng cho nhiều lớp đối tượng khác nhau, thao tác gọi có tính đa dạng (polymorphism) Mỗi thao tác lớp đối tượng cụ thể tương ứng với cài đặt cụ thể khác Một cài đặt gọi phương thức (method) Một đối tượng cụ thể thuộc lớp gọi thể (instance) lớp Joe Smith, 25 tuổi, nặng 58kg, thể lớp người Chương Lớp Sơ đồ đối tượng Ta dùng sơ đồ đối tượng để mô tả lớp đối tượng Sơ đồ đối tượng bao gồm sơ đồ lớp sơ đồ thể Sơ đồ lớp mô tả lớp đối tượng hệ thống, lớp đối tượng diễn tả hình chữ nhật có phần: phần đầu tên lớp, phần thứ hai mô tả thuộc tính phần thứ ba mô tả thao tác đối tượng lớp Chương Lớp Sơ đồ lớp sơ đồ thể Tên lớp Thuộc tính Thao tác Sinh viên Họ tên Năm sinh Mã số Điểm TB (Sinh viên) Nguyễn Văn A 1984 0610234T 9.2 Đi học Đi thi Phân loại Sơ đồ lớp Chương Lớp Sơ đồ thể 2.2 Các thành phần lớp Một kiểu liệu biểu diễn cụ thể khái niệm thực tế Ví dụ kiểu int biểu diễn cụ thể khái niệm số nguyên toán học Trong C++, kiểu liệu có sẵn (built-in data types) :int, long, float, double, char cho phép kiểm tra lúc biên dịch phát sinh mã chương trình tối ưu Các kiểu liệu cung cấp giao diện tự nhiên độc lập với phần cài đặt Chương Lớp 2.2 Các thành phần lớp Lớp C++ cài đặt kiểu liệu trừu tượng người sử dụng định nghóa, cho phép kết hợp liệu, phép toán, hàm liên quan để tạo đơn vị chương trình Các lớp có đầy đủ ưu điểm tiện lợi kiểu liệu nội Lớp tách rời phần giao diện (chỉ liên quan với người sử dụng) phần cài đặt lớp Lớp C++ cài đặt sử dụng từ khoá struct class Chương Lớp Ví dụ so sánh: Xây dựng kiểu liệu stack Cách tiếp cận cổ điển: // Stack1.cpp : //Dung cau truc va ham toan cuc #include typedef int bool; typedef int Item; const bool false = 0, true = 1; struct Stack { Item *st, *top; int size; }; Chương Lớp 10 Cấp huỷ đối tượng int *pi = new int; int *pj = new int(15); Diem *pd = new Diem(20,40); String *pa = new String("Nguyen Van A"); // delete pa; delete pd; delete pj; delete pi; Chương Lớp 106 Cấp huỷ nhiều đối tượng Trong trường hợp cấp nhiều đối tượng, ta cung cấp tham số cho phần tử cấp: int *pai = new int[10]; Diem *pad = new Diem[5]; // Bao sai String *pas = new String[5]; // Bao sai // Thoâng báo lỗi cho đoạn chương trình sau: Cannot find default constructor to initialize array element of type 'Diem' Cannot find default constructor to initialize array element of type String’ Lỗi khắc phục cách cung cấp phương thức thiết lập để đối tượng có khả tự khởi động Chương Lớp 107 Cấp huỷ nhiều đối tượng class String { char *p; public: String(char *s = "Alibaba") {p = strdup(s);} String(const String &s) {p = strdup(s.p);} ~String() {delete [] p;} // }; class Diem { double x,y; public: Diem(double xx, double yy):x(xx),y(yy){}; Diem():x(0),y(0){}; // }; Chương Lớp 108 Cấp huỷ nhiều đối tượng Khi phần tử cấp khởi động với giá trị int *pai = new int[10]; Diem *pad = new Diem[5]; // ca diem co cung toa (0,0) String *pas = new String[5]; // Ca chuoi cung duoc khoi dong bang “Alibaba” Việc huỷ nhiều đối tượng thực cách dùng delete có thêm dấu [] trước delete [] pas; delete [] pad; delete [] pai; (?) Có thể thay ba phát biểu phát biểu sau không ? delete pas,pad,pai; // ?? Chương Lớp 109 2.4 Giao diện chi tiết cài đặt Lớp có hai phần tách rời, phần giao diện khai báo phần public để người sử dụng “thấy” sử dụng, hai chi tiết cài đặt bao gồm liệu khai báo phần private lớp chi tiết mã hoá hàm thành phần, vô hình người dùng Ta thay đổi uyển chuyển chi tiết cài đặt, nghóa thay đổi tổ chức liệu lớp, thay đổi chi tiết thực hàm thành phần (do thay đổi tổ chức liệu để cải tiến giải thuật) Nhưng bảo đảm không thay đổi phần giao diện không ảnh hưởng đến người sử dụng, không làm đổ vỡ kiến trúc hệ thống Lớp ThoiDiem cài đặt với thành phần liệu giờ, phút, giây tổng số giây tính từ Chương Lớp 110 Lớp ThoiDiem – Cách class ThoiDiem { int gio, phut, giay; static bool HopLe(int g, int p, int gy); public: ThoiDiem(int g = 0, int p = 0, int gy = 0) {Set(g,p,gy);} void Set(int g, int p, int gy); int LayGio() const {return gio;} int LayPhut() const {return phut;} int LayGiay() const {return giay;} void Nhap(); void Xuat() const; void Tang(); void Giam(); }; 111 Chương Lớp Lớp ThoiDiem – Cách class ThoiDiem { long tsgiay; static bool HopLe(int g, int p, int gy); public: ThoiDiem(int g = 0, int p = 0, int gy = 0) {Set(g,p,gy);} void Set(int g, int p, int gy); int LayGio() const {return tsgiay / 3600;} int LayPhut() const {return (tsgiay%3600)/60;} int LayGiay() const {return tsgiay % 60;} void Nhap(); void Xuat() const; void Tang(); void Giam(); }; 112 Chương Lớp Giao diện chi tiết cài đặt Có thể xem chi tiết đầy đủ lớp thời điểm cài đặt giờ, phút, giây cài đặt tổng số giây tập tin nguồn thgian.cpp thgian2.cpp, Tương tự lớp Stack cài đặt dạng mảng dạng danh sách liên kết Chương Lớp 113 2.5 Các nguyên tắc xây dựng lớp Khi ta nghó đến “nó” khái niệm riêng rẽ, xây dựng lớp biểu diễn khái niệm Ví dụ lớp SinhVien Khi ta nghó đến “nó” thực thể riêng rẽ, tạo đối tượng thuộc lớp Ví dụ đối tượng Sinh viên “Nguyen Van A” (và thuộc tính khác mã số, năm sinh…) Lớp biểu diễn cụ thể khái niệm, lớp luôn DANH TỪ Các thuộc tính lớp thành phần liệu, nên chúng luôn DANH TỪ Các hàm thành phần thao tác rõ hoạt động lớp nên hàm ĐỘNG TỪ Chương Lớp 114 Các nguyên tắc xây dựng lớp Các thuộc tính liệu phải vừa đủ để mô tả khái niệm, không dư, không thiếu Các thuộc tính suy diễn từ thuộc tính khác dùng hàm thành phần để thực tính toán Chu vi, diện tích tam giác thuộc tính suy diễn // SAI class TamGiac { Diem A,B,C; double ChuVi, DienTich; public: // }; Chương Lớp // DUNG class TamGiac { Diem A,B,C; public: // double ChuVi()const; double DienTich() const; }; 115 Các nguyên tắc xây dựng lớp Cá biệt có số thuộc tính suy diễn đòi hỏi nhiều tài nguyên thời gian để thực tính toán, ta khai báo liệu thành phần Ví dụ tuổi trung bình dân Việt Nam class QuocGia { long DanSo; double DienTich; double TuoiTrungBinh; // public: double TinhTuoiTB() const; // }; Chương Lớp 116 Các nguyên tắc xây dựng lớp Chi tiết cài đặt, bao gồm liệu phần mã hoá hàm thành phần thay đổi uyển chuyển phần giao diện, nghóa phần khai báo hàm thành phần cần phải cố định để không ảnh hưởng đến người sử dụng (xem phần 2.4) Tuy nhiên nên cố gắng cài đặt liệu cách tự nhiên theo khái niệm // NEN // KHONG NEN class PhanSo class PhanSo { { int tu, mau; long tu_mau; public: public: // // }; }; Chương Lớp 117 Các nguyên tắc xây dựng lớp Dữ liệu thành phần nên kết hợp thay phân rã // NEN class TamGiac { Diem A,B,C; public: // }; class HinhTron { Diem Tam; double BanKinh; public: // }; Chương Lớp // KHONG NEN class TamGiac { double xA, yA, xB, yB, xC, yC; public: // }; class HinhTron { double tx, ty, BanKinh; public: // }; 118 Các nguyên tắc xây dựng lớp Trong trường hợp, nên có phương thức thiết lập để khởi động đối tượng Nên có phương thức thiết lập có khả tự khởi động không cần tham số Nếu đối tượng có nhu cầu cấp phát tài nguyên phải có phương thức thiết lập, phương thức thiết lập để khởi động đối tượng đối tượng kiểu có phương thức huỷ bỏ để dọn dẹp Ngoài phải có phép gán (chương tiếp theo) Ngược lại, đối tượng đơn giản không cần tài nguyên riêng không cần phương thức thiết lập không cần phương thức huỷ bỏ Chương Lớp 119 2.6 Một số ví dụ lớp Lớp Diem biểu diễn khái niệm điểm mặt phẳng với hai thành phần toạ độ x y Khai báo lớp Diem đặt tập tin diem.h chi tiết cài đặt hàm thành phần đặt tập tin diem.cpp Có thể xây dựng số ứng dụng lớp điểm tập tin tdiem.cpp dongho.cpp với ứng dụng tương ứng tdiem.exe dongho.exe (hoặc dongho2.exe, dongho3.exe) Lớp DaGiac biểu diễn khái niệm đa giác mặt phẳng có thao tác tịnh tiến, vị tự, quay, vẽ… Phần khai báo đặt tập tin dagiac.h, phần cài đặt tập tin dagiac.cpp ứng dụng tdg.cpp cho phép tạo, vẽ, tịnh tiến quay đa giác Tập tin thực thi tdg.exe Chương Lớp 120 .. .Chương – Đối tượng Lớp Đối tượng lớp Cài đặt lớp C++ Thiết lập huỷ bỏ đối tượng Giao diện chi tiết cài đặt Các nguyên tắc xây dựng lớp Một số ví dụ lớp 2.1 Đối tượng lớp Ta định nghóa đối tượng. .. có chúng tính chất mà chúng có Chương Lớp Đối tượng lớp Các đối tượng có đặc tính tương tự gom chung lại thành lớp đối tượng Ví dụ Người lớp đối tượng Một lớp đối tượng đặc trưng thuộc tính, hoạt... thể thuộc lớp gọi thể (instance) lớp Joe Smith, 25 tuổi, nặng 58kg, thể lớp người Chương Lớp Sơ đồ đối tượng Ta dùng sơ đồ đối tượng để mô tả lớp đối tượng Sơ đồ đối tượng bao gồm sơ đồ lớp sơ đồ

Ngày đăng: 11/05/2021, 03:03

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan