1. Trang chủ
  2. » Công Nghệ Thông Tin

Lập trình hướng đối tượng

49 72 0

Đ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

Tốn tử đa  BÀI Lập trình Hướng đối Mục đích học  Tốn tử đa :        Toán Toán Toán Toán Toán tử tử tử tử tử hai số học hai gán phức so sánh Đa với toán tử gán Copy constructors Lập trình Hướng đối Mục đích học  Hàm chuyển đổi kiểu    Từ kiểu thành kiểu người dùng định nghĩa ngược lại Giữa đối tượng thuộc lớp khác Những tốn tử khơng thể định nghĩa lại Lập trình Hướng đối Định nghĩa lại toán tử    Ta kết hợp tốn tử với hàm thành viên lớp Sau tốn tử dùng để thực phép toán đối tượng lớp Các toán tử +, -, *, / dùng biểu thức với tốn hạng có kiểu int, float Định nghĩa lại toán tử cho phép ta thực phép toán :   if (obj1 > obj2) { } với obj1 obj2 đối tượng lớp Lập trình Hướng đối Định nghĩa lại tốn tử (tiếp)    Ta định nghĩa hàm thành viên gán cho tốn tử so sánh > Bộ biên dịch phân biệt tốn tử định nghĩa lại cách xét kiểu liệu toán hạng Định nghĩa lại toán tử hình thức tính đa thể Lập trình Hướng đối Những điểm cần lưu ý    Không phép thay đổi chức toán tử thay đổi thứ tự ưu tiên chúng định nghĩa sẵn ngơn ngữ tốn tử ++ sử dụng tốn tử ngơi Ta định nghĩa lại tốn tử + dùng để nhân đối tượng Tuy nhiên ta nên tránh điều làm cho chương trình khó hiểu Lập trình Hướng đối Lợi ích   Làm cho chương trình dễ hiểu dễ truy tìm lỗi Xét ví dụ sau : obj3 = obj1 + obj2; cú pháp rõ ràng dễ hiểu cú pháp :  obj3.addObjects( obj1, obj2);  Lập trình Hướng đối Hàm toán tử  Hàm toán tử chứa câu lệnh để thực việc định nghĩa lại toán tử Ta dùng từ khoá operator theo sau toán tử cần định nghĩa lại :   kiểu_trả_về operator op(danh_sách_đối_số); op biểu tượng toán tử cần định nghĩa lại +, -, * Lập trình Hướng đối Tốn tử ngơi  Tốn tử ngơi có toán hạng :    ++ toán tử ngơi tăng tốn tử ngơi giảm Các tốn tử sử dụng theo cách trước sau Xét ví dụ : class Sample{ private: int counter; public: Sample() {counter = 0;} void operator ++() {++counter;} }; Lập trình Hướng đối Tốn tử (tiếp) void main() { Sample obj1; obj1++; //tăng counter = ++obj1; //tăng counter = }  Nếu biên dịch tìm thấy hàm tốn tử định nghĩa lại lớp câu lệnh obj1++ dịch thành obj1.operator+ +(); Lập trình Hướng đối 10 Ví dụ  Nếu lớp X có liệu thành viên kiểu trỏ cần phải có hàm khởi tạo, hàm tốn tử gán, hàm khởi tạo chép hàm hủy  Class X { X(some_value); X(const X&); X& operator=(const X&); ~X(); }; Lập trình Hướng đối 35 Hàm chuyển đổi kiểu   Là hàm dùng để chuyển đổi đối tượng thành kiểu ngược lại đối tượng lớp khác Bộ biên dịch tự động chuyển đổi kiểu người dùng định nghĩa đối tượng Lập trình Hướng đối 36 Ví dụ  class Converter { private: int feet; float inches; public: Converter() { feet=0; inches=0.0;} Converter(float metres) { float f; f=3.28 * metres; feet = int (f); inches = 12 * (f – feet);} }; Lập trình Hướng đối 37 Ví dụ (tiếp)  void main() { Converter d1 = 1.55; //dùng hàm khởi tạo thứ Converter d2; //dùng hàm khởi tạo thứ d2 = 2.0; //dùng hàm khởi tạo thứ } Lập trình Hướng đối 38 Đổi kiểu thành kiểu người dùng    Trong ví dụ ta khai báo đối tượng d1 dùng hàm khởi tạo thứ hai gán giá trị 1.55 Điều cho thấy chuyển đổi kiểu từ số thực thành đối tượng lớp Converter d2 = 2.0 sử dụng hàm khởi tạo để gán số thực cho đối tượng d2 Trước tiên biên dịch tìm hàm tốn tử gán, khơng có (khơng định nghĩa lại) dùng hàm khởi tạo để chuyển đổi kiểu Nếu khơng có hàm khởi tạo kích phát lỗi Lập trình Hướng đối 39 Đổi kiểu người dùng thành kiểu  Ta phải rõ cho biên dịch biết cách chuyển đổi đối tượng thành kiểu cách định nghĩa hàm chuyển đổi hàm thành viên lớp  operator float (){ float f; f = inches / 12; f += float (feet); return (f / 3.28); } Lập trình Hướng đối 40 Đổi kiểu người dùng thành kiểu (tiếp)     Ta dùng cú pháp m=d2; m=float(d2); Định nghĩa hàm chuyển đổi kiểu định nghĩa lại tốn tử áp đổi kiểu Hàm chuyển đổi kiểu bao gồm từ khóa operator tên kiểu liệu float, int Hàm chuyển đổi khơng có kiểu trả khơng có đối số Lập trình Hướng đối 41 Chuyển đổi kiểu đối tượng    Muốn chuyển đổi kiểu đối tượng ta phải định nghĩa hàm chuyển đổi kiểu Nó hàm thành viên lớp nguồn (bên phải tốn tử gán) Hoặc hàm thành viên lớp đích (bên trái tốn tử gán) Lập trình Hướng đối 42 Chuyển đổi kiểu đối tượng (tiếp)     objectA = objectB; objectA : đối tượng thuộc lớp đích objectB : đối tượng thuộc lớp nguồn Chuyển đổi kiểu đối tượng lớp khác thực với :   Hàm khởi tạo có đối số định nghĩa lớp đích Hoặc hàm chuyển đổi định nghĩa lớp nguồn Lập trình Hướng đối 43 Ví dụ class LFeet { private: int feet; float inches; public: LFeet(){ feet = 0; inches = 0.0; } LFeet(int ft, float in){ feet = ft; inches = in; } }; Lập trình Hướng đối 44 Ví dụ (tiếp) class LMetres { private: float metres; public: LMetres(){ metres = 0.0; } LMetres(float m){ metres = m;} }; void main(){ LMetres dm1 = 1.0; LFeet df1; df1 = dm1; } Lập trình Hướng đối 45 Hàm chuyển đổi lớp nguồn  Hàm chuyển đổi (trong lớp LMetres) chuyển đổi kiểu LMetres sang kiểu LFeet định nghĩa sau : operator LFeet() { float ffeet, inc; int ifeet; ffeet = 3.28 * metres; ifeet = int(ffeet); inc = 12 * (ffeet – ifeet); return LFeet(ifeet, inc); } Khi gặp biểu thức df1 = dm1; biên dịch gọi hàm chuyển đổi Lập trình Hướng đối 46 Hàm chuyển đổi lớp đích   LFeet::LFeet(LMetres dm){ float ffeet; ffeet = 3.28 * dm.GetMetres(); feet = int (ffeet); inches = 12 * (ffeet – feet); } Ta phải định nghĩa hàm thành viên GetMetres() lớp LMetres sau : float LMetres::GetMetres() { return metres; } Lập trình Hướng đối 47 Bảng tóm tắt cách chuyển đổi kiểu Kiểu chuyển đổi Hàm lớp đích Hàm lớp nguồn Cơ -> Lớp Hàm khởi tạo - Lớp -> Cơ - Hàm chuyển đổi Lớp -> Lớp Hàm khởi tạo Hàm chuyển đổi Lập trình Hướng đối 48 Tốn tử không phép định nghĩa lại  Ta không phép định nghĩa lại toán tử sau :      Toán Toán Toán Toán Toán tử tử tử tử tử sizeof truy cập thành viên phạm vi :: điều kiện ?: truy cập trỏ thành viên * Lập trình Hướng đối 49

Ngày đăng: 22/11/2020, 12:31

Xem thêm:

TỪ KHÓA LIÊN QUAN

Mục lục

    Toán tử đa năng

    Mục đích bài học

    Định nghĩa lại toán tử

    Định nghĩa lại toán tử (tiếp)

    Những điểm cần lưu ý

    Toán tử một ngôi

    Toán tử một ngôi (tiếp)

    Sử dụng đối tượng tạm không tên

    Sử dụng đối tượng tạm không tên (tiếp)

    Sử dụng con trỏ this

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w