Giới thiệu Visual C++ Giới thiệu Visual C++ Bởi: Khoa CNTT ĐHSP KT Hưng Yên Visual C++ môt phần mềm lập trình hướng đối tượng phát triển sở ngôn ngữ lập trình C C++ Phương pháp thiết kế hướng đối tượng vừa phát triển nhằm giúp nhà phát triển khai thác sức mạnh đối tượng ngôn ngữ lập trình hướng đối tượng, dùng lớp đối tượng khối xây dựng sở OOP (ngôn ngữ lập trình hướng đối tượng ) ngôn ngữ thực chương trình tổ chức tập hợp đối tượng hợp tác với nhau, đối tượng đại diện cho instance vài lớp lớp mà chúng thành viên lớp phân cấp thông qua quan hệ thừa kế Abstraction ( tính trừu tượng) : Sự trừu tượng thể đặc tính cốt yếu đối tượng mà đặc tính dùng để phân biệt đối tượng với tất loại đối tượng khác cung cấp cách rõ ràng giới hạn ý niệm ý nghĩa, liên quan đến viễn tượng người nhìn Trừu tượng tập trung vào nhìn bề đối tượng thỏa mãn hành vi chủ yếu đối tượng riêng biệt từ thực Ta có loại trừu tượng sau: - Thực thể trừu tượng : đối tượng mà đại diện cho mô hình hữu dụng miền vấn đề hay thực thể miền giải - Operation abstraction (hoạt động trừu tượng ) : đối tượng mà cung cấp tập tổng quát operation, tất operation thực thi loại chức - Máy ảo trừu tượng : đối tượng mà nhóm hoạt động với nhau, tất hoạt động sử dụng mức điều khiển cao Hoặc hoạt động mà chúng sử dụng tập hợp hoạt động mức thấp 1/7 Giới thiệu Visual C++ - Trừu tượng ngẫu nhiên : đối tượng mà đóng gói tập hợp hoạt động mà chúng quan hệ lẫn Một client đối tượng sử dụng nguồn tài nguyên đối tượng khác ( gọi server) Chúng ta biểu thị đặc điểm hành vi đối tượngbằng cách xem xét dịch vụ mà cung cấp cho đối tương khác, hoạt động mà thực thi cho đối tượng khác Quan điểm buộc phải tập trung vào nhìn bề đối tượng Chúng ta gọi toàn tập hợp hoạt động mà client thi hành cho đối tượng, với câu lệnh hợp lệ mà chúng gọi protocol Một protocol biểu thị cách thức mà đối tượng hành động phản ứng, cấu thành tổng thể bề tĩnh động trừu tượng Encap sulation (sự đóng kín) : Tính đóng kín trình phân chia phần tử trừu tượng để cấu thành nên cấu trúc hành vi nó, đóng kín cho phép hoạt động giao tiếp trừu tượng thực Sự đóng kín chế liên kết mã liệu mà thao tác, giữ cho an toàn khỏi can thiệp từ bên sử dụng sai Trong ngôn ngữ hướng đối tượng, mã liệu liên kết với để tạo thành “hộp đen” độc lập Trong hộp tất mã data cần thiết Khi mã data liên kết với đối tượng tạo Nói cách khác, đối tượng dụng cụ hỗ trợ cho đóng kín Trong đối tượng , mã, data, private (riêng) đối tượng hay public (chung) Mã data riêng thuộc đối tượng truy cập với phận đối tượng Nghĩa mã data riêng truy cập phần khác chương trình tồn đối tượng Khi data chung, phận khác truy cập đến nó định nghĩa đối tượng Các phần chung đối tượng dùng để cung cấp giao diện có điều khiển cho phần riêng đối tượng Nói chung, đối tượng biến thuộc kiểu người sử dụng định nghĩa Mỗi lần ta định nghĩa đối tượng mới, ta tạo loại data Đặc biệt thành viên đặt vào public, private, hay protectedcủa lớp Thành viên khai báo public thấy client, thành viên khai báo private hoàn toàn đóng kín, thành viên khai báo protected thấy với lớp lớp C++ cho phép kí hiệu friend : lớp hợp tác phép thấy phần privated 2/7 Giới thiệu Visual C++ Modularity (modun hóa) : Modularity tính chất hệ thống phân tích thành tập hợp dính kết ghép lại cách lỏng lẻo thành modun Việc phân chia chương trình thành phần riêng lẻ làm giảm độ phức tạp Ở ngôn ngữ lớp, đối tượng hình thành cấu trúc luận lý hệ thống Chúng ta đặt trừu tượng modun để tạo kiến trúc vật lý hệ thống Đối với vấn đề nhỏ, nhà phát triển định vấn đề khai báo tất lớp đối tượng gói Ta thường nhóm lớp vàø đối tượng có quan hệ modun, phơi bày phần tử mà modun khác cần thấy Trong hệ thống lớn, có nhiều modun thật khó cho người sử dụng tìm thấy lớp mà họ cần Hơn , định thay đổi hàng trăm modun phải hiệu chỉnh biên dịch lại Như vậy, modun hóa không tốt Modun phục vụ phần tử đơn vị phân chia phần mềm mà sử dụng lại qua ứng dụng Nhà phát triển chọn cách đóng gói đối tượng thành modun cho chúng thuận tiện để sử dụng lại Hierachy (hệ thống phân cấp) : Hệ thống phân cấp xếp theo thứ bậc hay đặt trừu tượng Có hai phân cấp quan trọng hệ thống phức tạp : cấu trúc lớp nó(phân cấp “is a”), cấu trúc đối tượng ( phân cấp “part of “) Thừa kế đơn giản: thừa kế mối quan hệ “ is a “ thừa kế định nghĩa mối quan hệ lớp, lớp chia sẻ cấu trúc hành vi định nghĩa lớp hay nhiều lớp ( tương ứng với thừa kế đơn giản đa thừa kế ) Do thừa kế phân cấp trừu tượng, lớp thừa kế hay nhiều lớp cha Đa thừa kế đưa đến số vấn đề phức tạp cho ngôn ngữ lập trình Những ngôn ngữ phải đưa hai vấn đề: xung đột tên lớp cha khác nhau, thừa kế lập lại nhiều lần Sự xung đột xảy hai hay nhiều lớp cha cấp chia sẻ lớp cha chung Và trường hợp vậy, lớp có nhiều cấu trúc lớp cha dùng chung Một số ngôn ngữ không cho phép thừa kế lập lại, số khác chọn hướng khác C++ cho phép người lập trình định: virtual base class (lớp sở ảo ) dùng để dùng chung cấu trúc lập lại, nonvirtual base class có kết trùng lớp 3/7 Giới thiệu Visual C++ Kiểm tra kiểu ( typing ) : Typing tuân theo bắt buộc lớp đối tượng, đối tượng lớp khác không thay lẫn chúng thay lẫn theo cách thức hạn chế C++ có khuynh hướng kiểm tra kiểu chặt chẽ ta lờ hay cấm kiểm tra.Tính đa dạng (polymorphism): Là tính chất cho phép tên dùng cho hai nhiều mục đích khác có quan hệ phương diện kỹ thuật Mục đích tính đa dạng áp dụng cho OOP cho phép tên dùng để rõ lớp tác động tổng quát, tác động cụ thể xác định loại data Ví dụ, C, hỗ trợ tính đa dạng nên tác động giá trị tuyệt đối cần phải có ba hàm khác nhau: abs(), labs(), fabs() Các hàm tính toán trả giá trị tuyệt đối số nguyên, số nguyên dài, giá trị dấu phẩy động Tuy nhiên, C++ có đặc tính đa dạng nên có hàm abs() Loại data dùng để gọi hàm xác định loại hàm thực dùng Trong C++ sử dụng tên hàm cho nhiều mục đích khác Điều gọi tải hàm(function overloading) Tổng quan khái niệm tính đa dạng ý tưởng “một giao diện, nhiều phương pháp” Điều có nghĩa thiết kế giao diện chung cho nhóm tác động có liên quan Tuy nhiên, tác động cụ thể thi hành phụ thuộc vào data Ưu điểm tính đa dạng chúng làm giảm tính phức tạp cách cho phép giao diện sử dụng để ghi rõ lớp tác động tổng quát, trình biên dịch lựa chọn tác động cụ thể áp dụng cho trường hợp Là người lập trình ta thực lựa chọn tay Ta cần nhớ sử dụng giao diện chung Liên kết tĩnh kiên kết động (Static and Dynamic Binding): Khái niệm typing static typing liên kết tĩnh hoàn toàn khác Strong typing đề cập tới quán kiểu Stactic binding có nghĩa kiểu biến biểu thức cố định vào lúc biên dịch Dynamic binding nghĩa kiểu biến biểu thức không cho biết chạy chương trình Bởi Strong typing Dynamic binding khái niệm độc lập ngôn ngữ vừa Strong Static typing Bản chất đối tượng: Một đối tượng có trạng thái, hành vi, đặc tính nhân dạng; cấu trúc hành vi đối tượng giống định nghĩa lớp chung chúng, thuật ngữ instance đối tượng thay lẫn 4/7 Giới thiệu Visual C++ Trạng thái (state) : đối tượng bao gồm tất đặc tính (thường tĩnh) đối tượng trừ giá trị ( thường động ) đặc tính Hành vi (behavior ) : đối tượng hoạt động phản ứng theo điều kiện trạng thái thay đổi message truyền đến Operations (hoạt động) : dịch vụ mà lớp cung cấp cho khách hàng Chúng ta thấy client thường thực thi năm loại opearation đối tượng Ba loại operation thông thường : • Modifier : operation thay đổi trạng thái đối tượng Selector: Operation truy xuất trạng thái đối tượng không làm thay đổi trạng thái • Iterrator : operation cho phép tất phần đối tượng truy xuất theo thứ tự định nghĩa trước Hai loại operation thông dụng khác cần thiết để tạo hủy instance lớp : • Constructor: operation tạo đối tượng (hoặc) khởi động trạng thái • Destructor operation giải phóng trạng thái đối tượng (hoặc) hủy đối tượng • Indentify: (đặc điểm nhận dạng) : indentify đặc tính đối tượng để phân biệt với đối tượng khác Mối quan hệ đối tượng: Links( liên kết) : Link nối kết vật lý hay ý niệm đối tượng Một đối tượng cộng tác với đối tượng khác thông qua link tới đối tượng Hay nói cách khác, link vó nghĩa hợp tác cụ thể qua đối tượng ( client) áp dụng dịch vụ đối tượng khác (nhà cung cấp) qua đối tượng điều khiển đối tượng khác Một đối tượng đóng vai trò sau: • Actor : đối tượng làm việc đối tượng khác không cho đối tượng khác làm việc nó, thuật ngữ actor active object thay lẫn • Server: đối tượng không làm việc đối tượng khác, cho đối tượng khác làm việc • Agent : đối tượng vừa làm việc đối tượng khác vừa cho đối tượng khác làm việc nó, đại lý thường tạo để làm công việc cho actor hay agent khác 5/7 Giới thiệu Visual C++ • Đối tượng cung cấp global client • Đối tượng cung cấp tham số cho operation client • Đối tượng cung cấp phần đối tượng client • Đối tượng cung cấp khai báo cục operation client Khi có multiple thread control, việc truyền thông tin đối tượng cần xử lý vấn đề multual exclusion hệ thống xử lý đồng thời Vấn đề đồng hóa phải xem xét Aggregation: Aggregation có nghĩa phân cấp tổng thể / phận, với khả điều khiển từ tổng thể ( gọi aggregate ) tới phận (được hiểu thuộc tính nó) Bản chất lớp: Class (lớp) : tập hợp đối tượng có cấu trúc chung hay hành vi chung Một đối tượng đơn giản instance lớp Interface: lớp cho thấy bên đối tượng nhấn mạnh đến vấn đề trừu tượng che dấu cấu trúc hành vi bên Implemention : môt lớp nhìn bên Implemention lớp bao gồm tât operation định nghĩa interface Chúng ta chia interface lớp thành ba phần: • Public : khai báo truy xuất đến client • Protected : khai báo truy xuất lớp đó, lớp nó, lớp friend • Private: khai báo truy xuất lớp lớp friend Mối quan hệ lớp: Phần lớn ngôn ngữ hướng đối tượng hỗ trợ trực tiếp vài kết hợp quan hệ sau đây: • Association : gồm có quan hệ một-một, một-nhiều, nhiều-nhiều • Inheritance (thừa kế) : lớp chia cấu trúc (hoặc) hành vi định nghĩa lớp (đơn thừa kế) nhiều lớp (đa thừa kế) 6/7 Giới thiệu Visual C++ • Aggregation (kết tập) : quan hệ kết tập lớp giống quan hệ kết tập đối tượng tượng lớp Đa thừa kế thường bị lẫn lộn với kết tập Trong C++ thừa kế protected hay private dễ dàng bị thay kết tập protected hay private instace lớp cha, mà không tính ngữ nghĩa Ví dụ: #include "stdafx.h" #include "conio.h" #include "stdio.h" int main(int argc, char* argv[]) { printf("chao"); getch(); return 0; } 7/7 ... kín, thành viên khai báo protected thấy với lớp lớp C++ cho phép kí hiệu friend : lớp hợp tác phép thấy phần privated 2/7 Giới thiệu Visual C++ Modularity (modun hóa) : Modularity tính chất hệ... chọn hướng khác C++ cho phép người lập trình định: virtual base class (lớp sở ảo ) dùng để dùng chung cấu trúc lập lại, nonvirtual base class có kết trùng lớp 3/7 Giới thiệu Visual C++ Kiểm tra... (đa thừa kế) 6/7 Giới thiệu Visual C++ • Aggregation (kết tập) : quan hệ kết tập lớp giống quan hệ kết tập đối tượng tượng lớp Đa thừa kế thường bị lẫn lộn với kết tập Trong C++ thừa kế protected