Bài giảng Lập trình hướng đối tượng - Chương 1: Các khái niệm cơ bản của lập trình hướng đối tượng - Phạm Minh Hoàn

Viết chương trình thực hiện các yêu cầu sau đây: Nhập dữ liệu cho các sinh viên (dùng mảng động), các thông tin của sinh viên bao gồm: mã sinh viên, họ tên, lớp, điểm trung bình. Chương trình có sử dụng toán tử new và delete. In ra danh sách sinh viên có sắp xếp vị thứ theo điểm trung bình. In ra những sinh viên có điểm trung bình cao nhất.

ppt82 trang | Chia sẻ: huongthu9 | Lượt xem: 414 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bài giảng Lập trình hướng đối tượng - Chương 1: Các khái niệm cơ bản của lập trình hướng đối tượng - Phạm Minh Hoàn, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
CHƯƠNG 1. CÁC KHÁI NIỆM CƠ BẢN CỦA LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Phạm Minh HoànBộ môn công nghệ thông tin – Đại học Kinh tế Quốc dânEmail: hoanpm@neu.edu.vn Phạm Minh Hoàn - NEUNỘI DUNG CHƯƠNG TRÌNHBÀI 1. GIỚI THIỆU TIẾP CẬN HƯỚNG ĐỐI TƯỢNGBÀI 2. CÁC KHÁI NIỆM CƠ BẢN CỦA LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG BÀI 3. CÁC MỞ RỘNG CỦA NGÔN NGỮ C++Phạm Minh Hoàn - NEUGIỚI THIỆU TIẾP CẬN HƯỚNG ĐỐI TƯỢNGNhững nhược điểm của lập trình hướng thủ tục:Lập trình hướng thủ tục (LTHTT) là cách tiếp cận theo các hàm chức năng. Một hệ thống phần mềm gồm một dãy các công việc cần thực hiện như đọc dữ liệu, tính toán, xử lý, lập báo cáo và in ấn kết quả v.v... Mỗi công việc đó sẽ được thực hiện bởi một số hàm nhất định. Chương trình khó kiểm soát và khó khăn trong việc bổ sung, nâng cấp chương trình.Mô hình được xây dựng theo cách tiếp cận hướng thủ tục không mô tả được đầy đủ, trung thực hệ thống trong thực tế. Phương pháp LTHTT đặt trọng tâm vào hàm là hướng tới hoạt động sẽ không thực sự tương ứng với các thực thể trong hệ thống của thế giới thực.Phạm Minh Hoàn - NEUGIỚI THIỆU TIẾP CẬN HƯỚNG ĐỐI TƯỢNGTiếp cận hướng đối tượng Trong thế giới thực, vật chất tồn tại dưới dạng đối tượng, đó là các thực thể có mối quan hệ với nhau. Đối với việc tổ chức chương trình, ứng dụng có thể được định nghĩa như một tập các thực thể - hoặc các đối tượng, sao cho quá trình tái tạo những suy nghĩa là gần sát nhất về thế giới thực.Cách tiếp cận hướng đối tượng.Phạm Minh Hoàn - NEUGIỚI THIỆU TIẾP CẬN HƯỚNG ĐỐI TƯỢNGLập trình hướng đối tượng:Lập trình hướng đối tượng (Object Oriented Programming - LTHĐT) là phương pháp lập trình lấy đối tượng làm nền tảng để xây dựng thuật giải, xây dựng chương trình.Phương pháp LTHĐT là thiết kế chương trình xoay quanh dữ liệu của hệ thống. LTHĐT không cho phép dữ liệu chuyển động tự do trong hệ thống.Phạm Minh Hoàn - NEUCÁC KHÁI NIỆM CƠ BẢN CỦA LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGĐối tượngTrong thế giới thực: đối tượng được hiểu như là một thực thể, nó có thể là người, vật hoặc một bảng dữ liệu cần xử lý trong chương trình, . Ví dụ: sinh_viên, máy_tính, .Trong LTHĐT: đối tượng là biến thể hiện của lớp.Phạm Minh Hoàn - NEUCÁC KHÁI NIỆM CƠ BẢN CỦA LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGLớp Lớp là một khái niệm mới trong LTHĐT so với kỹ thuật LTHTT. Lớp là một bản mẫu mô tả các thông tin cấu trúc dữ liệu và các thao tác hợp lệ của các phần tử dữ liệu. Ví dụ: lớp_sinh_viên, lớp_máy_tính, .Đối tượng = Dữ liệu + Phương thức.Phạm Minh Hoàn - NEUCÁC KHÁI NIỆM CƠ BẢN CỦA LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGMối liên hệ giữa lớp và đối tượng:Lớp là khái niệm tĩnh.Đối tượng là khái niệm động.Đối tượng được xác định trong bộ nhớ của máy tính. Đối tượng được tạo ra để xử lý thông tin, thực hiện nhiệm vụ được thiết kế, sau đó bị hủy bỏ khi đối tượng đó hết vai trò.Phạm Minh Hoàn - NEUCÁC KHÁI NIỆM CƠ BẢN CỦA LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGTrừu tượng hóa dữ liệu và bao gói thông tinTrừu tượng hóa là cách biểu diễn những đặc tính chính và bỏ qua những chi tiết vụn vặt hoặc những giải thích.Bao gói thông tin là việc đóng gói dữ liệu và các phương thức vào một đơn vị cấu trúc lớp. Dữ liệu được tổ chức sao cho thế giới bên ngoài (các đối tượng ở lớp khác) không truy nhập vào được. Phương thức của lớp sẽ đóng vai trò như là giao diện giữa dữ liệu của đối tượng và phần còn lại của chương trình. Nguyên tắc bao gói dữ liệu để ngăn cấm sự truy nhập trực tiếp trong lập trình được gọi là sự che giấu thông tin.Phạm Minh Hoàn - NEUCÁC KHÁI NIỆM CƠ BẢN CỦA LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGKế thừaKế thừa là quá trình mà các đối tượng của lớp này được quyền sử dụng một số tính chất của các đối tượng của lớp khác. Sự kế thừa cho phép định nghĩa một lớp mới trên cơ sở các lớp đã tồn tại. Lớp mới này, ngoài những thành phần được kế thừa, sẽ có thêm những thuộc tính và các hàm mới. Nguyên lý kế thừa hỗ trợ cho việc tạo ra cấu trúc phân cấp các lớp.Phạm Minh Hoàn - NEUCÁC KHÁI NIỆM CƠ BẢN CỦA LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGTương ứng bộiTương ứng bội là khả năng của một khái niệm có thể sử dụng với nhiều chức năng khác nhau. Tương ứng bội đóng vai quan trọng trong việc tạo ra các đối tượng có cấu trúc bên trong khác nhau nhưng cùng dùng chung một giao diện bên ngoài. Phạm Minh Hoàn - NEUCÁC KHÁI NIỆM CƠ BẢN CỦA LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGLiên kết độngLiên kết động là dạng liên kết các thủ tục và hàm khi chương trình thực hiện lời gọi tới các hàm, thủ tục đó. Trong liên kết động, nội dung của đoạn chương trình ứng với thủ tục, hàm sẽ không được biết cho đến khi thực hiện lời gọi tới thủ tục, hàm đó. Phạm Minh Hoàn - NEUCÁC KHÁI NIỆM CƠ BẢN CỦA LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGTruyền thông báo Truyền thông báo cho một đối tượng là yêu cầu đối tượng thực hiện một việc gì đó.Ví dụ: Hinh_vuong.Dien_tich(canh)Sinh_vien.Diem_trung_binh(ho_ten)Sự trao đổi thông tin chỉ có thể thực hiện trong thời gian đối tượng tồn tại.Phạm Minh Hoàn - NEUQUY TRÌNH LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGXác định các dạng đối tượng (lớp) của bài toán.Tìm kiếm các đặc tính chung (dữ liệu chung) trong các dạng đối tượng này, những gì chúng cùng nhau chia sẻ.Xác định lớp cơ sở dựa trên cơ sở các đặc tính chung của các dạng đối tượng.Xây dựng các lớp dẫn xuất chứa các thành phần, những đặc tính không chung còn lại của các dạng đối tượng từ lớp cơ sở. Ngoài ra, ta còn đưa ra các lớp có quan hệ với các lớp cơ sở và lớp dẫn xuất.Phạm Minh Hoàn - NEUNGÔN NGỮ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGNgôn ngữ lập trình dựa trên đối tượng là ngôn ngữ gồm các đặc tính:Bao gói dữ liệuCơ chế che giấu và truy nhập dữ liệuTự động tạo lập và xóa bỏ các đối tượngPhép toán tải bộiNgôn ngữ lập trình hướng đối tượng là ngôn ngữ gồm các đặc tính:Các đặc tính dựa trên đối tượng + kế thừa + liên kết động.Phạm Minh Hoàn - NEUCÁC MỞ RỘNG CỦA NGÔN NGỮ C++Giới thiệu chung về C++:C++ là ngôn ngữ lập trình hướng đối tượng.C++ là sự mở rộng của ngôn ngữ C.Phần lớn các chương trình C đều có thể chạy được trong C++.Phạm Minh Hoàn - NEUCÁC MỞ RỘNG CỦA NGÔN NGỮ C++Đặt lời chú thíchCách 1: /* Đây là câu chú thích trên nhiều dòng */Cách 2: // Đây là chú thích trên một dòngPhạm Minh Hoàn - NEUCÁC MỞ RỘNG CỦA NGÔN NGỮ C++Khai báo biếnLệnh khai báo biến có thể đặt bất kỳ chỗ nào trong chương trình trước khi các biến được sử dụng. Phạm vi hoạt động của biến là khối trong đó biến được khai báo. Phạm Minh Hoàn - NEUCÁC MỞ RỘNG CỦA NGÔN NGỮ C++Ví dụ: Nhập một dãy số thực rồi sắp xếp theo thứ tự tăng dần.#include #include #include main(){int n;printf("\n So phan tu cua day n="); scanf("%d",&n);float *x=(float*)malloc((n+1)*sizeof(float));for (int i=0;ix[j]) //(*(x+i)>*(x+j)){tg = x[i]; x[i] = x[j]; x[j] = tg;}printf("\n Day sau khi sap xep\n");for (i=0;i#include main(){int n;printf("\n So phan tu cua day n="); scanf("%d",&n);float s=0.0;for (int i=1;i#include main(){int n;printf("\n So phan tu cua day n="); scanf("%d",&n);float s=0.0;for (int i=1;i #include main(){float a[20][20], smax;int m, n, i, j, imax, jmax;puts(“Nhap so hang va so cot cua ma tran: "); scanf("%d%d", &m, &n);for (i=0;i>biến 1>>. . . >>biến n;Trong đó:Toán tử cin được định nghĩa trước như một đối tượng biểu diễn cho thiết bị vào chuẩn của C++ là bàn phím, cin được sử dụng kết hợp với toán tử trích >> để nhập dữ liệu từ bàn phím cho các biến 1, 2, ..., n. Phạm Minh Hoàn - NEUCÁC MỞ RỘNG CỦA NGÔN NGỮ C++Chú ý 1:Để sử dụng các loại toán tử và phương thức nói trên cần khai báo tập tin dẫn hướng iostream.h #include iostream.h;Để nhập một chuỗi không quá n ký tự và lưu vào mảng một chiều s (kiểu char) có thể dùng hàm cin.get như sau: cin.get(s, n);Phạm Minh Hoàn - NEUCÁC MỞ RỘNG CỦA NGÔN NGỮ C++Chú ý 2:Toán tử nhập cin>> sẽ để lại ký tự chuyển dòng ’\n’ trong bộ đệm. Ký tự này có thể làm trôi phương thức cin.get(). Để khắc phục tình trạng trên cần dùng phương thức cin.ignore(1) để bỏ qua một ký tự chuyển dòng. cin.ignore(1);Phạm Minh Hoàn - NEUCÁC MỞ RỘNG CỦA NGÔN NGỮ C++Định dạng khi in ra màn hình:Quy định độ rộng tối thiểu để hiển thị k vị trí cho giá trị (nguyên, thực, chuỗi) dùng hàm: setw(k)Hàm này cần đặt trong toán tử xuất và nó chỉ có hiệu lực cho một giá trị được in gần nhất. Các giá trị in ra tiếp theo sẽ có độ rộng tối thiểu mặc định là 0.Ví dụ: cout // thu vien cout, cin#include // thu vien getch()#include // thu vien setw#include // thu vien ham chuoi ky tuusing namespace std;main(){ struct {char ht[25];float d1, d2, d3, td; }ts[100], tg;int n, i, j;cout >n; cin.ignore(1);Phạm Minh Hoàn - NEUCÁC MỞ RỘNG CỦA NGÔN NGỮ C++Ví dụ (tiếp 1):for (i=0;i>ts[i].d1>>ts[i].d2>>ts[i].d3;cin.ignore(1);ts[i].td=ts[i].d1+ts[i].d2+ts[i].d3;}Phạm Minh Hoàn - NEUCÁC MỞ RỘNG CỦA NGÔN NGỮ C++Ví dụ (tiếp 2):for (i=0;i>n;p = new double[n];if (p == NULL){cout #include #include #include #include struct TS{char ht[20];long sobd;float td;};Phạm Minh Hoàn - NEUCÁC MỞ RỘNG CỦA NGÔN NGỮ C++Ví dụ (tiếp 1):main(){TS *ts;int n;cout>n;ts = new TS[n+1];if (ts == NULL){cout > ts[i].sobd;cout>ts[i].td;}Phạm Minh Hoàn - NEUCÁC MỞ RỘNG CỦA NGÔN NGỮ C++Ví dụ (tiếp 3):for (i=0;i#include #include #include void nhapds(double *a,int n){ for(int i=0;i>a[i]; }}Phạm Minh Hoàn - NEUCÁC MỞ RỘNG CỦA NGÔN NGỮ C++Ví dụ (tiếp):void hv (double &x,double &y){ double tam=x; x=y; y=tam;}void sapxep(double *a,int k){ for(int i=0;ia[j]) hv(a[i],a[j]);}Phạm Minh Hoàn - NEUCÁC MỞ RỘNG CỦA NGÔN NGỮ C++Ví dụ (tiếp):void inds(double *a, int k){ for(int i=0;i>n;nhapds(x,n);sapxep(x,n);cout#include #include #include void nhapmt(float a[20][20], int m, int n){for(int i=0;i> a[i][j]; }}Phạm Minh Hoàn - NEUCÁC MỞ RỘNG CỦA NGÔN NGỮ C++Ví dụ (tiếp 1):void inmt(float a[20][20], int m, int n){coutx[vtmax]) vtmax=i;if(x[i]>m>>n;nhapmt(a,m,n);inmt(a,m,n);float *p=(float*) a;int vtmax,vtmin; Phạm Minh Hoàn - NEUCÁC MỞ RỘNG CỦA NGÔN NGỮ C++Ví dụ (tiếp 4):for(int i=0;i#include main(){int s = f(5,6);cout#include inline void dtcvhcn(int a,int b,int &dt,int &cv){dt=a*b;cv=2*(a+b);}main(){int a[20], b[20], cv[20], dt[20], n;cout>n;Phạm Minh Hoàn - NEUCÁC MỞ RỘNG CỦA NGÔN NGỮ C++Ví dụ 2 (tiếp):for(int i=0;i>a[i]>>b[i];dtcvhcn(a[i],b[i],dt[i],cv[i]);}for(i=0;i#include #include void nhapds(int *x, int n);void nhapds(double *x, int n);int max(int x,int y);double max(double x, double y);Phạm Minh Hoàn - NEUCÁC MỞ RỘNG CỦA NGÔN NGỮ C++Ví dụ (tiếp 1):void nhapds(int *x, int n){for(int i=0;i>x[i];}}void nhapds(double *x, int n){for (int i=0;i>x[i];}}Phạm Minh Hoàn - NEUCÁC MỞ RỘNG CỦA NGÔN NGỮ C++Ví dụ (tiếp 2):int max(int x, int y){ return x>y?x:y;}double max(double x, double y){ return x>y?x:y;}Phạm Minh Hoàn - NEUCÁC MỞ RỘNG CỦA NGÔN NGỮ C++Ví dụ (tiếp 3):int max(int *x, int n){int s=x[0];for(int i=1;i>ni;cout>nd;cout<<"\n Nhap day so thuc: "; nhapds(x,nd);maxi = max(a,ni);maxd = max(x,nd);cout<<"\n Max day so nguyen ="<<maxi;cout<<"\n Max day so thuc="<<maxd;getch();}Phạm Minh Hoàn - NEUCÁC MỞ RỘNG CỦA NGÔN NGỮ C++Viết chương trình thực hiện các yêu cầu sau đây:Nhập dữ liệu cho các sinh viên (dùng cấu trúc danh sách liên kết đơn), các thông tin của sinh viên bao gồm: mã sinh viên, họ tên, lớp, điểm trung bình.Chương trình có sử dụng toán tử new và delete.In ra danh sách sinh viên có sắp xếp vị thứ theo điểm trung bình. Phạm Minh Hoàn - NEUCÁC MỞ RỘNG CỦA NGÔN NGỮ C++Viết chương trình thực hiện các yêu cầu sau đây:Nhập dữ liệu cho các sinh viên (dùng mảng động), các thông tin của sinh viên bao gồm: mã sinh viên, họ tên, lớp, điểm trung bình.Chương trình có sử dụng toán tử new và delete.In ra danh sách sinh viên có sắp xếp vị thứ theo điểm trung bình.In ra những sinh viên có điểm trung bình cao nhất.Phạm Minh Hoàn - NEU

Các file đính kèm theo tài liệu này:

  • pptbai_giang_lap_trinh_huong_doi_tuong_chuong_1_cac_khai_niem_c.ppt