lập trình hướng đối tượng object oriented programming

19
Lập trình hướng đối tượng Object Oriented Programming

Upload: ocean-ortega

Post on 02-Jan-2016

60 views

Category:

Documents


2 download

DESCRIPTION

Lập trình hướng đối tượng Object Oriented Programming. Tổng Quan. Lập trình hướng đối tượng là gì ? Sự phát triển của phương pháp lập trình hướng đối tượng . Lớp (class) – Đối tượng (Object). Các tính chất trong lập trình hướng đối tượng. Lập trình hướng đối tượng là gì ?. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Lập trình hướng đối tượng Object Oriented Programming

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

Page 2: Lập trình hướng đối tượng Object Oriented Programming

1. Lập trình hướng đối tượng là gì?2. Sự phát triển của phương pháp lập trình hướng

đối tượng.3. Lớp (class) – Đối tượng (Object).4. Các tính chất trong lập trình hướng đối tượng.

Tổng Quan

Page 3: Lập trình hướng đối tượng Object Oriented Programming

Lập trình hướng đối tượng (gọi tắt là OOP – Object Oriented Programming)

Để hiểu rõ hơn, ta phải xét các phương pháp lập trình trước để thấy được ưu điểm của phương pháp lập trình hướng đối tượng.

Lập trình hướng đối tượng là gì?

Page 4: Lập trình hướng đối tượng Object Oriented Programming

1. Lập trình không cấu trúc (Unstructured Programming)

2. Lập trình thủ tục (Procedural Programming)3. Lập trình hướng đối tượng (OOP)4. …

Sự phát triển của phương pháp lập trình hướng đối tượng

Page 5: Lập trình hướng đối tượng Object Oriented Programming

Lập trình không cấu trúc (Unstructured Programming)

Tất cả lệnh được viết trong chương trình chính theo 1 cách tuần tự từ đầu tới cuối, từ lệnh này tới lệnh kia tới khi kết thúc chương trình.

Chỉ nên áp dụng cho chương trình làm 1 việc duy nhất (chương trình nhỏ)

Page 6: Lập trình hướng đối tượng Object Oriented Programming

Chương trình được chia thành nhiều chương trình con, chương trình chính sẽ tùy vào giải thuật và gọi từng chương trình con khi cần.

Chương trình có cấu trúc, dễ kiểm lỗi, giải thuật rõ ràng. Tuy nhiên:Chương trình = Cấu trúc dữ liệu + Giải thuật- Cấu trúc dữ liệu: Cách tổ chức dữ liệu, các cấu trúc bài toán theo

ngôn ngữ lập trình- Giải thuật: Một quy trình để thực hiện bài toán( Trong chương trình, giải thuật phụ thuộc vào cấu trúc dữ liệu, cấu

trúc dữ liệu chỉ phụ thuộc vào 1 số giải thuật nhất định, nếu cấu trúc dữ liệu bị thay đổi giải thuật phải thay đổi theo cho phù hợp, một giải thuật thường đi kèm với 1 số kiểu dữ liệu nhất định)

Lập trình thủ tục (Procedural Programming)

Page 7: Lập trình hướng đối tượng Object Oriented Programming

Đây là 1 góc nhìn thực tế tới lập trình. Đối tượng là nền tảng xây dựng thuật giải. Dữ liệu và chức năng thao tác trên dữ liệu được gom lại thành đối tượng. Chương

trình dựa tất cả trên đối tượng. Lập trình hướng đối tượng liên kết cấu trúc dữ liệu với các thao tác theo cách chúng

ta nghĩ về thế giới hiện tại, chúng ta có thể gắn một số các hoạt động cụ thể với 1 loại hoạt động nào đó và đặt giả thiết lên các quan hệ đó để giải quyết vấn đề.

Ví dụ: Ta có thể nhận biết mọi thứ trong đời sống như là các đối tượng, như 1 ngôi nhà, 1 người bạn, 1 cái cây… chúng gồm các thuộc tính (attributes) và những hành vi (actions) xung quanh chúng.

Hướng đối tượng là 1 quá trình đời sống hóa quá trình phát triển phần mềm, phần mềm lúc này không phải là 1 tập lệnh hay tập các module được gọi khi có yêu cầu. Phần mềm lúc này là 1 tập các đối tượng, các đối tượng này thực thi các công việc hoặc mang trong mình những nguyên liệu (data) mà chương trình cần. Một đối tượng có thể gồm các đối tượng con nhỏ hơn và đối tượng con có thể chứa nhìu đối tượng con khác. Mỗi đối tương có thể là thuộc tính (attributes) của đối tượng lớn hơn chứa nó.

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

Page 8: Lập trình hướng đối tượng Object Oriented Programming

Mô hình hóa dữ liệu (data) và hành vi (action) được gọi là phương pháp lập trình hướng đối tượng OOP.

Ví dụ: Người là 1 đối tượng, người có đầu, tay, chân…và đầu, tay, chân…cũng là những đối tượng. Đối tượng có thuộc tính (attributes) là mắt, tóc, tai….có hành vi (actions) là suy nghĩ, nghe, nhìn…mắt nhìn, tai nghe…tập hợp thông tin cho não xử lý, xử lý xong nếu là đồ ăn ngon thì chỉ thị cho chân tay hành động là lấy tiền mua về ăn :D tất cả những hành vi này tạo nên 1 hành vi lớn là hành vi của đối tượng người

Đối tương Thuộc tính + Dữ liệu của đối tượng + Xác định đặc trưng của đối tượng được miêu tả Ví dụ: Con chó màu trắng, hoặc con chó thuộc giống Nhật… Phương thức + Thành phần xử lý của 1 đối tượng + Xác định hành vi của đối tượng Ví dụ: Con chó nằm ngủ, con chó ăn, con chó sủa…

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

Page 9: Lập trình hướng đối tượng Object Oriented Programming

Những quy chuẩn chung nhất về thuộc tính và hành vi cho tập đối tượng được gọi là lớp.

Một lớp là một xác định ở cấp chủng loại của một tập thực thể có những đặc tính và hành vi giống nhau.

Lớp là một mô hình khái niệm. Nó mang tính tổng quát, quy chuẩn chứ không mang tính đặc thù, cụ thể.

Lớp giống như một nguyên mẫu cho tập đối tượng có cùng tập thuộc liệu (attributes) và tập hành vi (actions).

Trong lập trình hướng đối tượng, lớp nhóm hóa, đóng gói dữ liệu, điều biến chức năng thực thi (module hóa các xử lý, hành vi), ... rồi từ đó cấu trúc hóa thành một hệ thống trong cài đặt hướng đối tượng.

Lớp (class) – Đối tượng (Object)

Page 10: Lập trình hướng đối tượng Object Oriented Programming

Ví dụ: Chúng ta có nhiều đối tượng người. Mỗi đối tượng này có màu da khác nhau nhưng

tất cả đều có da.Tóc có thể dài ngắn, thẳng xoăn khác nhau nhưng tất cả đối tượng người đều có tóc (trừ những người đã cạo hoặc bị rụng).

Như vậy, nhắc đến đối tượng người, chúng ta nghĩ ngay đến người phải có tóc, có chân, có đầu, có mắt,... mặc dù đầu có thể to, có thể nhỏ; chân có thể ngắn, có thể dài; màu tóc có thể xanh, đỏ, tím, vàng,... Người được gọi là lớp - LỚP NGƯỜI.

Cây, ví dụ một cây bằng lăng và một cây xà cừ. Cả hai đều có thân, có lá, có cành, có rễ, có hoa mặc dù hoa có thể khác nhau, hình dạng lá khác nhau. Chúng ta có LỚP CÂY. Khi nhắc đến từ CÂY, chúng ta sẽ hình dung ra ngay chúng có cành, lá, rễ, hoa,... mặc dù cụ thể như thế nào thì phải biết đích xác một cây (đối tượng cây) hiện hữu.

Những quy chuẩn chung nhất về thuộc tính và hành vi cho tập đối tượng được gọi là lớp.

Lớp (class) – Đối tượng (Object)

Page 11: Lập trình hướng đối tượng Object Oriented Programming

Lớp (class) – Đối tượng (Object)

Class DOG

Page 12: Lập trình hướng đối tượng Object Oriented Programming

1. Trừu tượng (Abtraction)2. Đóng gói (Encapsulation) – Che dấu thông

tin(Information hiding)3. Thừa kế (Inheritance)4. Đa hình (Polymophism)

Các tính chất trong lập trình hướng đối tượng

Page 13: Lập trình hướng đối tượng Object Oriented Programming

Trừu tượng hóa dữ liệu Abtraction- Phân nhóm đối tượng theo thuộc tính và hành vi (chỉ

quan tâm đến những chi tiết quan trọng, bỏ qua những chi tiết không liên quan)

- Ví dụ: 1 khách hàng tới đặt phòng 1 khách sạnĐối tượng khách gồm các thuộc tính như Họ tên, ngày

sinh, địa chỉ, số CMND, ….Và hành động thuê phòng chỉ cần lưu các thông tin cần

thiết như họ tên khách, số CMND, số người tối đa, số phòng thuê, giá tiền…

- 1 lớp đối tượng là 1 nhóm đối tượng có cùng tập hợp là thuộc tính và hành động

Trừu tượng (Abtraction)

Page 14: Lập trình hướng đối tượng Object Oriented Programming

Đóng gói:-1 đối tượng đóng gói cả phương thức và thuộc tính của nó- 1 thuộc tính/phương thức gắn liền với 1 đối tượng- Khi đề cập tới 1 thuộc tính/phương thức phải chỉ rõ phương thức/thuộc tính thuộc đối tượng nào Khi ta có 1 đối tượng, cũng có luôn các thành phần dữ liệu và hành vi của nó

Che dấu thông tin:- 1 đối tượng có thể che dấu các chi tiết bên trong của nó và

chỉ thể hiện 1 số chi tiết bên ngoài để giao tiếp người sử dụng sẽ đơn giản.

Đóng gói (Encapsulation) – Che dấu thông tin (Information hiding)

Page 15: Lập trình hướng đối tượng Object Oriented Programming

Các đối tượng có chia sẻ hay mở rộng các đặc tính sẵn có mà không phải tiến hành định nghĩa lại từ lớp cơ sở (base)/ cha(super) của lớp con(sub)

Thừa kế hình thành lên sự phân cấp các lớpChia sẻ các phương thức, thuộc tính mà ko cần

viết lạiVí dụ: 1 lớp A1 thừa kế lớp A nghĩa là lớp A1 thừa

kế tất cả các phương thức, thuộc tính là protected hoặc public của A

Thừa kế (inheritane)

Page 16: Lập trình hướng đối tượng Object Oriented Programming

public class A {   public int a;   protected int b;   private int c;   // constructor – Hàm khởi tạo - của lớp A.      public A() {       a = 0;       b = 1;       c = 2;   }   public int getNextA() {       return a+1;   }   public int getNextB() {       return b+1;   }   public int getNextC() {       return c+1;   }}

Thừa kế (Inheritance)

Page 17: Lập trình hướng đối tượng Object Oriented Programming

public class A1: A {   public void setA (int a) {       this.a = a;   }   public void setB (int b) {       this.b = b;   }   /* Hàm setC này lỗi nè :D   public void setC (int c) {       this.c = c;   }   /**    * hàm main sau sẽ in ra kết quả: a = 1; b = 2; c = 3;    */   static void main() {       A1 a1 = new A1();       Console.WriteLine("a = " + a1.getNextA()                          + "; b = " + a1.getNextB()                          + "; c = " + a1.getNextC() + ";");  }}

Thừa kế (Inheristance)

Page 18: Lập trình hướng đối tượng Object Oriented Programming

Thừa kế (inheritane)

Page 19: Lập trình hướng đối tượng Object Oriented Programming

Tính đa hình cho phép mô tả những phương thức có tên giống nhau trong các lớp khác nhau

Ví dụ : Objects KháchHàng và NhânViên đều có Property Name. Nếu ta có thể lập trình để dùng Name mà không cần nói rõ nó thuộc về Object KháchHàng hay NhânViên thì đó là Polymorphism :D

1. Overloading: trong 1 class có thể có 1 method nhưng cách dùng thì khác nhau, có thể tham số khác nhau, hoặc kiểu dữ liệu của tham số khác nhau

Ví dụ: Class Math có method là add() - Ta gọi: Math.add(1,1) kết quả 2 - Hoặc Math.add(1,1,1) kết quả là 3 - Hoặc Math.add(“a”,”b”) kết quả là abLưu ý là trong class Math mình phải có 3 method này, cùng tên, nhưng khác

kiểu dữ liệu hoặc số tham số2. Overriding: class A kế thừa từ lớp B, class B có 1 method là add cộng 2 số.

Vậy A kế thừa B thì A cũng có method add(), Ở A khi overriding thì add() của A có thể làm 1 việc khác là trừ, nhân, chia….

Đa hình (Polymorphism)