Lập trình hướng đối tượng - Chương 1: Giới thiệu lập trình hướng đối tượng
Mô thức “Lập trình Thủ tục” kế thừa structured programming và đưa thêm ý tưởng chương trình con (procedure/function) chứa các đoạn mã thường sử dụng
Chương trình máy tính có thể chia thành các chương trình con (procedure) và các chương trình con gọi nhau để giải quyết bài toán
42 trang |
Chia sẻ: huyhoang44 | Lượt xem: 672 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Lập trình hướng đối tượng - Chương 1: Giới thiệu lập trình hướng đối tượng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
GIỚI THIỆU LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGKhoa Công nghệ thông tinTrường Đại học Ngoại ngữ - Tin học, TP.HCMCHƯƠNG 1: 1Một số Mô thức lập trìnhKhái niệm Lớp và Đối tượngBa nguyên tắc lập trình hướng đối tượngMột số phần mềm được viết theo hướng đối tượngNỘI DUNG2Object Oriented Programming (OOP) là mô thức quan trọngTất cả ngôn ngữ hiện đại điều object oriented hay hỗ trợ object và classCác framework, library, API hiện đại đều object oriented.NET Framework Class Library (C#), Java API classes (Java), Laravel (PHP), Rails (Ruby), STL (C++), Django (Python), Android, Bất kỳ ai bắt đầu công việc phát triển phần mềm nên làm quen với OOP và OO modelingTại sao OOP?3Một số mô thức lập trình4Programming paradigm: Mô thức/Mô hình lập trìnhCách chúng ta “nhìn” về việc xây dựng các chương trình máy tínhMột số programming paradigm:ImperativeStructured ProceduralObject orientedFunctionalDeclarativeMô thức lập trình5Mô thức “Lập trình Tuần tự” với ý tưởng chủ đạo là lệnh (commands)Chương trình là chuỗi các lệnh (cụ thể/rõ ràng (explicit)) có thứ tự (step by step) dùng để thay đổi trạng thái chương trìnhImperative programmingInput dataProcessOutput data6Ví dụDATA SEGMENT A DB 1,2,3,4,5,6,7,8,9,10 DATA ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE START: MOV AX,DATA MOV DS,AX MOV CL,10 LEA BX,A MOV AH,00 MOV AL,00 L1: ADD AL,BYTE PTR[BX] INC BX DEC CL CMP CL,00 JNZ L1 MOV AH,4CH INT 21 END STARTCODE ENDS 7Đặc điểm:Các biến toàn cụcMỗi bước ảnh hưởng đến trạng thái toàn cục của chương trìnhCó lệnh goto để nhảy đến lệnh khácCó những đoạn mã được viết nhiều lầnNgôn ngữ: Assembly, Pascal, C, Imperative programming8Mô thức “Lập trình Cấu trúc” là dạng Imperative programming, nhưng Chương trình có tổ chức, cấu trúc logic hơn: Structured programmingresult = [];for i = 0; i 5 { addToList(result, toUpper(p.name)); }}return sort(result);9Đặc điểm:Lệnh tuần tự (Sequence), Lệnh lặp (Loop), Lệnh điều kiện (Condition)Phong cách lập trình Thục đầu dòng (indentation)Loại bỏ/hạn chế lệnh gotoNgôn ngữ: Pascal, C, Khuyết điểm: Khó phân công cho nhiều người cùng viếtDữ liệu được “thả tự do”Có những đoạn mã viết nhiều lầnStructured programming10Mô thức “Lập trình Thủ tục” kế thừa structured programming và đưa thêm ý tưởng chương trình con (procedure/function) chứa các đoạn mã thường sử dụngChương trình máy tính có thể chia thành các chương trình con (procedure) và các chương trình con gọi nhau để giải quyết bài toánProcedural programming11Ví dụpublic static int Factorial(int n){ int result = 1; for (int i = 2; i <= n; i++) result = result * i; return result;}static void Main(string[] args){ int fact; fact = Factorial(5); Console.WriteLine("5! = " + fact); int n = 10; int m = 5; fact = Factorial(n) + Factorial(m); Console.WriteLine("n! + m! = " + fact);}12Đặc điểmTập trung vào “action” của chương trình, không phải dataPhương pháp top-down, làm mịn dần: Chia chương trình lớn thành các chương trình con, Biến toàn cục (global variable) và Biến cục bộ (local variable)Ngôn ngữ: Pascal, C, Khuyết điểm: Mối quan hệ giữa dữ liệu và hàm không được quan tâm, quản lýProcedural programming13Mô thức “Lập trình Hướng đối tượng” cải biên procedure programming bằng cách đưa vào ý tưởng object (đối tượng)Chương trình máy tính gồm các objects, các objects giao tiếp với nhau để giải quyết bài toán đặt raObject oriented programmingĐối tượng = Dữ liệu + Hàm thao tác trên Dữ liệu14Ví dụclass Student{ string code; string name; int yearOfBirth; public Student(string studentCode, string studentName, int year) { code = studentCode; name = studentName; yearOfBirth = year; } public int GetYearOld() { return DateTime.Now.Year - yearOfBirth; }}15Ví dụclass Program{ static void Main(string[] args) { InformaticsClass a = new InformaticsClass(); a.Input(); Console.WriteLine("No. " + a.NumStudents()); }}class InformaticsClass{ Student[] students; string className; public void Input() { } public int NumStudents() { if (students == null) return 0; return students.Length; }}16Đặc điểm:Tập trung xung quanh khái niệm object (tập trung vào dữ liệu và những gì làm với dữ liệu đó)Tập trung cả Dữ liệu và HàmTổ chức code theo cách (mô phỏng) hoạt động của thế giới thựcMô hình hóa các đối tượng trong thế giới thực vào máy tínhHỗ trợ Các nguyên tắc: Đóng gói (encapsulation)Thừa kế (inheritance)Đa hình (polymorphism), Object Oriented Programming17Ưu điểm:Quản lý mối quan hệ giữa Dữ liệu và Hàm (trong object)Tổ chức code hiệu quả theo cách thức tổ chức trong tự nhiênGiúp mô hình hóa các đối tượng trong thế giới thực trên máy tínhNgôn ngữ: C++, Java, C#, Object Oriented Programming18Khái niệm Lớp và Đối tượng19Trong thế giới thực có nhiều đối tượng: Đối tượng (object)20Hoạt động thường ngày: Sáng ra khỏi gường, dùng bàn chảy đánh răng, ăn sáng và uống cafe, đến công ty làm việc, đến nhà hàng ăn trưa, giải lao, rồi quay về công ty làm viêc, tối vào bếp nấu ăn, xem ti vi/đọc sách, lên gường ngủ.Life là quá trình tương tác giữa các đối tượng với nhauÝ tưởng: Tiến trình viết phần mềm là quá trình mô hình hóa từ thực tế vào máy tínhĐối tượng (object)21Trong thế giới thực, đối tượng (object) thường cóMột số thuộc tính cấu tạo nên đối tượngMột số hành vi Đối tượng (object)Attributes:IDNameYearOfBirthBehaviours:GetAgeSetNameAttributes:Title AuthorPages Behaviours:CountWordsBookMarkSetTitle22OOP là phương pháp chuyển các vấn đề thế giới thực (đối tượng thực) sang các mô hình (đối tượng trên máy tính) có thể giải quyết trên máy tính Trong OOP, Đối tượng (object): Bất kỳ thứ gì có thể được mô hình thành: Dữ liệu (data/field/property/attribute/state)Hàm (function/method/behaviour/operation) thao tác trên dữ liệuTrong OOP, Đối tượng (object) là biến có Tập dữ liệu và Hàm Đối tượng (object)23Real world object: CarProperties: color, make, model, year, VelocityMethods:Accelerator (chân ga)Brake (thắng)Speedmotor (đồng hồ tốc độ)Đối tượng (object) – ví dụ24Lớp (class): Nhiều đối tượng cụ thể “giống nhau” được nhóm thành một loại/loài hay lớp (class)Lớp (class) là mẫu (template) hay bản thiết kế (blueprint) để tạo đối tượng Lớp (class)25Lớp (class) – ví dụ26Trong OOP, Lớp (class) dùng để định nghĩa/tạo ra kiểu mới, từ đó tạo ra đối tượng, lớp có Dữ liệu (data/field/property/attribute/state), dùng biến lưu trữ Các hàm (function/method/behaviour) thao tác trên dữ liệuLớp (class)27VD: Để tạo Car, Lấy Car class, dựa trên đó tạo CarLớp và Đối tượngClassobjectobjectobject28Lớp và Đối tượngclass Car{ int velocity; public Accelerator() { } public int Speedmotor() { }}class Program{ staitc void Main () { Car a = new Car(); Car b = new Car(); Car c = new Car(); }}293 nguyên tắc lập trình hướng đối tượng30Đóng gói (Encapsulation) và Giao diện (Interface)Ẩn chi tiết của lớp (Đóng gói), chỉ cung cấp các phương thức cần thiết để dùng (Giao diện) Thừa kế (Inheritance)Tạo lớp mới thừa kế lớp đã cóĐa hình (Polymorphism)Khả năng tạo ra các lớp dẫn xuất, cài đặt cùng một method của lớp cơ sở theo những cách khác nhau (tùy từng lớp dẫn xuất)3 nguyên tắc lập trình hướng đối tượng31Đóng gói (Encapsulation)Ẩn chi tiết công việc thực thi của lớpTrong OOP, Đóng gói làẨn đi các propertyẨn đi một số methodẨn đi các chi tiết hiện thực của method Giao diện (Interface)Bản điều khiển cho phép dùng đối tượngTrong OOP, Giao diện là tập các method cho phép dùng objectEncapsulation và Interface32Encapsulation và Interface33Thừa kế (inheritance)Tạo lớp mới thừa kế lớp đã cóMột cách tái sử dụng các lớp bằng cách mở rộng lớp đã có thành một lớp cụ thể“Lớp đã có”: base class, superclass, parent class“Lớp mới”: derived class, subclass, child class Thừa kế (inheritance)34Thừa kế (inheritance)35Thừa kế (inheritance)36Thừa kế (inheritance)37Thừa kế: Lớp con thừa kếCác dữ liệu của lớp chaCác hàm của lớp chaNgoài ra, lớp con cònCó những dữ liệu riêng của lớp conCó những hàm riêng của lớp conThừa kế (inheritance)38Đa hình (polymorphism)Poly = manyMorphism = formsCác lớp con cài đặt cùng một hàm của lớp cha, nhưng mỗi lớp con có cách cài đặt khác nhauĐa hình (polymorphism)39Đa hình (polymorphism)40PhotoshopAdobe AcrobatNotePad++VLC (VideoLan)Camtasia StudioPaint.NETVisual Studio Microsoft Office (Word, Excel, )SQL Server Sky clientMỘT SỐ PHẦN MỀM VIẾT THEO OOP41Tại sao học OOP?OOP là gì?Object và Class3 nguyên tắc cơ bản của lập trình hướng đối tượngĐóng gói (Encapsulation)Thừa kế (Inheritance)Đa hình (Polymorphism)ĐIỂM CHÍNH42
Các file đính kèm theo tài liệu này:
- lap_trinh_huong_doi_tuongchuong_01_gioi_thieu_lap_trinh_huong_doi_tuong_791.pptx