C++ và lập trình hướng đối tượng - Chương
lời nói đầuLập trình cấu trúc là phơng pháp tổ chức, phân chia chơng trình thành các hàm, thủ tục, chúng đợc dùng để xử lý dữ liệu nhng lại tách rời các cấu trúc dữ liệu. Thông qua các ngôn ngữ Foxpro, Pascal, C đa số những ngời làm Tin học đã khá quen biết với phơng pháp lập trình này.Lập trình hớng đối tợng dựa trên việc tổ chức chơng trình thành các lớp. Khác với hàm và thủ tục, lớp là một đơn vị bao gồm cả dữ liệu và các phơng thức xử lý. Vì vậy lớp có thể mô tả các thực thể một cách chân thực, đầy đủ cả phần dữ liệu và yêu cầu quản lý. T t-ởng lập trình hớng đối tợng đợc áp dụng cho hầu hết các ngôn ngữ mới chạy trên môi trờng Windows nh Microsoft Access, Visual Basic, Visual C. Vì vậy việc nghiên cứu phơng pháp lập trình mới này là rất cần thiết đối với tất cả những ngời quan tâm, yêu thích Tin học.C ra đời năm 1973 với mục đích ban đầu là để viết hệ điều hành Unix trên máy tính mini PDP. Sau đó C đã đợc sử dụng rộng rãi trên nhiều loại máy tính khác nhau và đã trở thành một ngôn ngữ lập trình cấu trúc rất đợc a chuộng.Để đa C vào thế giới hớng hớng đối tợng, năm 1980 nhà khoa học ngời Mỹ B. Stroustrup đã cho ra đời một ngôn ngữ C mới có tên ban đầu là C có lớp, sau đó đến năm 1983 thì gọi là C++. Ngôn ngữ C++ là một sự phát triển mạnh mẽ của C. Trong C++ chẳng những đa vào tất cả các khái niệm, công cụ của lập trình hớng đối tợng mà còn đa vào nhiều khả năng mới mẻ cho hàm. Nh vậy C++ là một ngôn ngữ lai cho phép tổ chức chơng trình theo các lớp và các hàm. Có thể nói C++ đã thúc đẩy ngôn ngữ C vốn đã rất thuyết phục đi vào thế giới lập trình hớng đối tợng và C++ đã trở thành ngôn ngữ hớng đối tợng nổi bật trong những năm 90.Cuốn sách này sẽ trình bầy một cách hệ thống các khái niệm của lập trình hớng đối tợng đợc cài đặt trong C++ nh lớp, đối tợng, sự thừa kế, tính tơng ứng bội và các khả năng mới trong xây dựng, sử dụng hàm nh: đối tham chiếu, đối mặc định, hàm trùng tên, hàm toán tử. Có một số vấn đề còn ít đợc biết đến nh cách xây dựng hàm với số đối bất định trong C cũng sẽ đợc giới thiệu. Các chơng từ 1 đến 10 với cách giải thích tỉ mỉ và với gần 100 chơng trình minh hoạ sẽ cung cấp cho bạn đọc các khái niệm, phơng pháp và kinh nghiệm lập trình hớng đối tợng trên C++. Mục lục cuối sách sẽ hệ thống ngắn gọn ph-ơng pháp phân tích, thiết kế và lập trình hớng đối tợng trên bình diện chung.Cuốn sách gồm 10 chơng và 6 phụ lụcChơng 1 hớng dẫn cách làm việc với phần mềm TC++ 3.0 để thử nghiệm các chơng trình, trình bầy sơ lợc về các phơng pháp lập trình và giới thiệu một số mở rộng đơn giản của C++ .Chơng 2 trình bầy các khả năng mới trong việc xây dựng và sử dụng hàm trong C++ nh biến tham chiếu, đối có kiểu tham chiếu, đối có giá trị mặc định, hàm trực tuyến, hàm trùng tên, hàm toán tử.Chơng 3 nói về một khái niệm trung tâm của lập trình hớng đối t-ợng là lớp gồm: Định nghĩa lớp, khai báo các biến, mảng đối tợng (kiểu lớp), phơng thức, dùng con trỏ this trong phơng thức, phạm vi truy xuất của các thành phần, các phơng thức toán tử. Chơng 4 trình bầy các vấn đề tạo dựng, sao chép, huỷ bỏ các đối t-ợng và các vấn đề khác có liên quan nh: Hàm tạo, hàm tạo sao chép, hàm huỷ, toán tử gán, cấp phát bộ nhớ cho đối tợng, hàm bạn, lớp bạn.Chơng 5 trình bầy một khái niệm quan trọng tạo nên khả năng mạnh của lập trình hớng đối tợng trong việc phát triển, mở rộng phần mềm, đó là khả năng thừa kế của các lớp.Chơng 6 trình bầy một khái niệm quan trọng khác cho phép xử lý các vấn đề khác nhau, các thực thể khác nhau, các thuật toán khác nhau theo cùng một lợc đồ thống nhất, đó là tính tơng ứng bội và ph-ơng thức ảo. Các công cụ này cho phép dễ dàng tổ chức chơng trình quản lý nhiều dạng đối tợng khác nhau.Chơng 7 nói về việc tổ chức vào - ra trong C++. C++ đa vào một khái niệm mới gọi là các dòng tin (Stream). Các thao tác vào - ra sẽ thực hiện trao đổi dữ liệu giữa bộ nhớ với dòng tin: Vào là chuyển dữ liệu từ dòng nhập vào bộ nhớ, ra là chuyển dữ liệu từ bộ nhớ lên dòng xuất. Để nhập xuất dữ liệu trên một thiết bị cụ thể nào, ta chỉ cần gắn 3 4 dòng nhập xuất với thiết bị đó. Việc tổ chức vào ra theo cách nh vậy là rất khoa học và tiện lợi vì nó có tính độc lập thiết bị.Chơng 8 trình bầy các hàm đồ hoạ sử dụng trong C và C++. Các hàm này đợc sử dụng rải rác trong toàn bộ cuốn sách để xây dựng các đối tợng đồ hoạ.Chơng 9 trình bầy các hàm truy xuất trực tiếp vào bộ nhớ của máy tính, trong đó có bộ nhớ màn hình. Các hàm này sẽ đợc sử dụng trong chơng 10 để xây dựng các lớp menu và cửa sổ .Chơng 10 giới thiệu 5 chơng trình tơng đối hoàn chỉnh nhằm minh hoạ thêm khả năng và kỹ thuật lập trình hớng đối tợng trên C++Phụ lục 1 trình bầy các phép toán trong C++ và thứ tự u của chúng.Phụ lục 2 liệt kê một danh sách các từ khoá của C++.Phụ lục 3 trình bầy bảng mã ASCII và mã quét của các ký tự.Phụ lục 4 trình bầy một vấn đề quan trọng nhng còn ít đợc nói đến trong các tài liệu, đó là cách sử dụng con trỏ void để xây dựng các hàm với số đối không cố định giống nh các hàm printf và scanf của C.Vì trong C++ vẫn sử dụng các hàm của C, nên trong phụ lục 5 sẽ giới thiệu tóm tắt hơn 200 hàm để bạn đọc tiện việc tra cứu. Cuối cùng, phụ lục 6 trình bầy một cách ngắn gọn phơng pháp phân tích, thiết kế và lập trình hớng đối tợng trên bình diện chung.Khi viết chúng tôi đã hết sức cố gắng để cuốn sách đợc hoàn chỉnh, song chắc chắn không tránh khỏi thiếu sót, vì vậy rất mong nhận đợc sự góp ý của độc giả.Nhân dịp này chúng tôi xin chân thành cám ơn cử nhân Nguyễn Văn Phác đã tận tình giúp đỡ trong việc hiệu đính và biên tập cuốn sách này.Tác giả5 . menu và cửa sổ .Chơng 10 giới thiệu 5 chơng trình tơng đối hoàn chỉnh nhằm minh hoạ thêm khả năng và kỹ thuật lập trình hớng đối tợng trên C++Phụ lục 1 trình. thuyết phục đi vào thế giới lập trình hớng đối tợng và C++ đã trở thành ngôn ngữ hớng đối tợng nổi bật trong những năm 90.Cuốn sách này sẽ trình bầy một