intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Lập trình hướng đối tượng: Chương 1 - Trần Sơn Hải

Chia sẻ: Lavie Lavie | Ngày: | Loại File: PPT | Số trang:25

73
lượt xem
2
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Mời các bạn tham khảo bài giảng Lập trình hướng đối tượng: Chương 1 do Trần Sơn Hải biên soạn sau đây để nắm bắt được những kiến thức về C++ và C; hàm cin/cout/cerr; tham chiếu; chồng hàm; tham số ngầm định trong lời gọi hàm; toán tử quản lý bộ nhớ động; lập trình cấu trúc và một số kiến thức khác.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Lập trình hướng đối tượng: Chương 1 - Trần Sơn Hải

  1. LẬP TRÌNH  HƯỚNG ĐỐI TƯỢNG Trần Sơn Hải transonhai@gmail.com
  2. Tóm tắt nội dung môn học  Phần 1: Giới thiệu  Phần 2: Các khái niệm cơ bản  Phần 3:  Lớp và đối tượng   Phần 4: Kỹ thuật thừa kế và tính đa hình  Phần 5: Thiết kế chương trình hướng đối tượng   Phần 6: Khuôn mẫu (template)   Phần 7: Luồng nhập xuất  Phần 8: Cacù mẫu thiết kế hướng đối tượng 11/26/15 Lập Trình Hướng Đối Tượng Slide 2
  3. Tài liệu tham khảo  Stroustrup, Bjarne. The C++ Programming Language, 3rd Ed.  Dietel & Dietel. C++ How to Program, 3rd Ed. 2003  Eckel, Bruce. Thinking in C++, 2nd Ed. Vol 1. Vol.2.  Nguyễn Thanh Thủy …, Lập trình hướng đối tượng với C++.  NXB Khoa học kỹ thuật.  Gamma: Design Patterns. Addison­Wesley, 1998. 11/26/15 Lập Trình Hướng Đối Tượng Slide 3
  4. LẬP TRÌNH  HƯỚNG ĐỐI TƯỢNG Chương 1: Giới thiệu
  5. C++ và C  Sự mở rộng thứ nhất của C++ so với C  Hàm xuất/nhập chuẩn  Tham chiếu  Chồng hàm, Tham số có giá trị ngầm định  Toán tử cấp phát và giải phóng vùng nhớ động  Sự mở rông thứ hai của C++ so với C là hỗ trợ  lập trình hướng đối tượng 11/26/15 Lập Trình Hướng Đối Tượng Slide 5
  6. Hàm cin/cout/cerr #include void main() { int n; double d; char s[100]; cout > n >> d >> s; cout
  7. Tham chiếu  Tham chiếu là địa chỉ vùng nhớ được cấp phát cho một  biến.  Ký hiệu & đặt trước biến hoặc hàm để xác định tham  chiếu của chúng  Ví dụ 1:  int x = 10, *px = &x, &y = x;  *px = 20; // *px = x = y = 20  y = 30;  // y = x = *px = 30  Ví dụ 2:  int arrget(int *a, int i) { return a[i]; }  arrget(a, 1) = 1; // a[1] = 1;  cin >> arrget(a,1); // cin >> a[1];  Ví dụ 3:   void swap1(int x, int y) { int t = x; x = y; y = t; }  void swap2(int *x, int *y) { int *t = x; x = y; y = t; }  void swap3(int &x, int &y) { int t = x; x = y; y = t; } 11/26/15 Lập Trình Hướng Đối Tượng Slide 7
  8. Chồng hàm  (Functions overloading ) int abs(int i); int abs(int i); long labs(long l); long abs(long l); double fabs(double d); double abs(double d); int abs(int i) { return abs(i);} long abs(long l) { return labs(l);} double abs(double d) { return fabs(d);} void test_abs() { int i = abs(10); // abs(int ) long l = abs(-10l); // abs(long ) double = abs(0.1l); // abs(double ) } 11/26/15 Lập Trình Hướng Đối Tượng Slide 8
  9. Tham số ngầm định trong lời gọi  hàm void inc(int &a, int b = 1) { a = a + b; } int x = 5, y = 10; inc(x, 10); // x = x + 10 inc(y); // y = y + 1 Chuù yù:  Caùc tham soá coù giaù trò ngaàm ñònh phaûi ñaët cuoái danh saùch tham soá, ñeå traùnh nhaàm laãn caùc giaù trò.  Caùc giaù trò ngaàm ñònh cuûa tham soá 11/26/15 chæ ñöôïc khai baùo trong khuoân maãu Lập Trình Hướng Đối Tượng Slide 9
  10. Toán tử quản lý bộ nhớ động  Toán tử cấp phát bộ nhớ động new int *x; x = new int;  // x = (int*)malloc(sizeof(int)); char *y; y = new char[100];  // y =  (char*)malloc(100);  Toán tử giải phóng vùng nhớ động delete delete x; // free(x); delete y; // free(y); 11/26/15 Lập Trình Hướng Đối Tượng Slide 10
  11. Const  Nên khai báo hằng đối với:  Các đối tượng mà ta không định sửa đổi  const double PI = 3.14;  const Date openDate(18,8,2003);  Các tham số của hàm mà ta không định cho hàm đó  sửa đổi  void printHeight(const LargeObj &LO) { cout 
  12. Lập trình cấu trúc Tư tưởng của phương pháp lập trình cấu trúc là tổ chức chương trình thành các chương trình con và theo quan điểm của phương pháp lập này thì chương trình là sự kết hợp giữa cấu trúc dữ liệu và giải thuật. Điều này gây ra khó khăn: Người lập trình phải có kiến thức rất vững về cấu trúc dữ liệu  11/26/15 Lập Trình Hướng Đối Tượng Slide 12
  13. Lập trình cấu trúc Chương trình = Cấu trúc dữ liệu + giải thuật Giải thuật của chương trình phụ thuộc rất chặt chẽ vào cấu trúc dữ liệu, do vậy chỉ cần một thay đổi nhỏ ở cấu trúc dữ liệu cũng có thể làm thay đổi giải thuật và phải viết lại chương trình =>Như vậy, phương pháp này không thích hợp cho dự án phần mềm lớn 11/26/15 Lập Trình Hướng Đối Tượng Slide 13
  14. Lập trình hướng đối tượng  Lập trình hướng đối tượng đặt trọng tâm vào đối  tượng, yếu tố quan trọng trong quá trình phát triển  chương trình và không cho phép dữ liệu biến động tự  do trong hệ thống  ­ Dữ liệu được gắn chặt với các hàm thành các vùng  riêng mà chỉ có các hàm đó tác động lên và cấm các hàm  bên ngoài truy nhập tới một cách tùy tiện  ­  Lập trình hướng đối tượng cho phép chúng ta phân  tích bài toán thành các thực thể được gọi là các đối  tượng và sau đó xây dựng các dữ liệu cùng các hàm xung  quanh các đối tượng đó  ­ Các đối tượng có thể tác động, trao đổi thông tin với  nhau thông qua cơ chế thông báo  11/26/15 Lập Trình Hướng Đối Tượng Slide 14
  15. Các đặc điểm quan trọng của OO  Các lớp đối tượng ­ Classes  Đóng gói – Encapsulation  Thừa kế ­ Inheritance  Đa hình ­ Polymorphism  Ñ o á i t ö ô ïn g  =  d ö õ  lie ä u  +  p h ö ô n g   thöùc 11/26/15 Lập Trình Hướng Đối Tượng Slide 15
  16. Một số ngôn ngữ  lập trình hướng đối tượng  C#  C++  Common Lisp Object System  Eiffel  Fortran  Java  Objective­C  OCaml  Object Pascal  Perl  PHP  Python  Ruby  Simula  Sleep  Smalltalk  ADA  Visual FoxPro  11/26/15 Lập Trình Hướng Đối Tượng Slide 16
  17. Trừu tượng hóa  Là cách nhìn đơn giản hóa về một đối tượng  mà trong đó chỉ bao gồm những đặc điểm được  quan tâm và bỏ qua những chi tiết không cầm  thiết 11/26/15 Lập Trình Hướng Đối Tượng Slide 17
  18. Tính đóng gói  Tách rời các khía cạnh giao diện với bên ngoài  của đối tượng với chi tiết cài đặt bên trong.   Tính đóng gói ngăn chặn khả năng một chương  trình trở nên quá phụ thuộc lẫn nhau dẫn tới  hậu quả một sự thay đổi nhỏ có thể ảnh  hưởng lớn đến toàn bộ hệ thống.   Trong tiếp cận O.O. khả năng kết hợp dữ liệu  và hành vi trong một thực thể duy nhất giúp cho  tính đóng gói rõ ràng hơn và hiệu quả hơn. 11/26/15 Lập Trình Hướng Đối Tượng Slide 18
  19. Kết hợp dữ liệu và hành vi  Trong cách tiếp cận thủ tục cổ điển, hệ thống  được xây dựng trên hai sơ đồ phân cấp chằng  chịt: sơ đồ phân cấp dữ liệu và sơ đồ phân cấp  thủ tục, trong đó sự liên hệ giữa một loại dữ  liệu và các thủ tục xử lý dữ liệu rất mờ nhạt,  dẫn đến khó khăn trong việc sửa chữa, nâng  cấp trong tương lai.   Cách tiếp cận O.O. loại bỏ những nhược điểm  kể trên bằng cách kết hợp dữ liệu và phần thủ  tục xử lý dữ liệu vào trong một thực thể duy  nhất, hệ thống trở thành một sơ đồ phân cấp  duy nhất các lớp đối tượng. 11/26/15 Lập Trình Hướng Đối Tượng Slide 19
  20. Đối tượng và lớp  Ta định nghĩa một đối tượng là một "cái gì đó"  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õ thế giới  thực và cung cấp cơ sở cho việc cài đặt trong  máy.   Mỗi đối tượng có một nét nhận dạng để phân  biệt nó với các đối tượng khác. Nét nhận dạng  mang ý nghĩa các đối tượng được phân biệt với  nhau do sự tồn tại vốn có của chúng chứ không  phải các tính chất mà chúng có. 11/26/15 Lập Trình Hướng Đối Tượng Slide 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2