Bài giảng Lập trình hướng đối tượng - Chương 1: Tổng quan về OOP

a. Hợp ngữ (Assembly language):

n Là một ngôn ngữ lập trình tuần tự, gần với tập

các lệnh mã máy của CPU.

n Khó nhớ, khó viết, nhất là với những bài toán

phức tạp.

n Khó sửa lỗi, bảo trì.

b. NNLT cấu trúc/thủ

tục:

n Xây dựng chương trình

dựa trên các hàm/thủ

tục/chương trình con

n Dữ liệu và xử lý (hàm)

tách rời nhau

n Các hàm không bắt

buộc phải tuân theo

một cách thức chung

truy cập vào dữ liệu

c. NNLT hướng đối tượng:

n Thể hiện các thành phần của bài toán là các “đối

tượng” (object).

n Hướng đối tượng là một kỹ thuật để mô hình hóa

hệ thống thành nhiều đối tượng.

Bài giảng Lập trình hướng đối tượng - Chương 1: Tổng quan về OOP trang 1

Trang 1

Bài giảng Lập trình hướng đối tượng - Chương 1: Tổng quan về OOP trang 2

Trang 2

Bài giảng Lập trình hướng đối tượng - Chương 1: Tổng quan về OOP trang 3

Trang 3

Bài giảng Lập trình hướng đối tượng - Chương 1: Tổng quan về OOP trang 4

Trang 4

Bài giảng Lập trình hướng đối tượng - Chương 1: Tổng quan về OOP trang 5

Trang 5

Bài giảng Lập trình hướng đối tượng - Chương 1: Tổng quan về OOP trang 6

Trang 6

Bài giảng Lập trình hướng đối tượng - Chương 1: Tổng quan về OOP trang 7

Trang 7

Bài giảng Lập trình hướng đối tượng - Chương 1: Tổng quan về OOP trang 8

Trang 8

Bài giảng Lập trình hướng đối tượng - Chương 1: Tổng quan về OOP trang 9

Trang 9

Bài giảng Lập trình hướng đối tượng - Chương 1: Tổng quan về OOP trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 16 trang duykhanh 6220
Bạn đang xem 10 trang mẫu của tài liệu "Bài giảng Lập trình hướng đối tượng - Chương 1: Tổng quan về OOP", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Lập trình hướng đối tượng - Chương 1: Tổng quan về OOP

Bài giảng Lập trình hướng đối tượng - Chương 1: Tổng quan về OOP
ject-oriented modeling
 n Các đối tượng và sự tương tác giữa chúng trong lập 
 Model trình
 drives n Các đối tượng giao tiếp với nhau bằng cách gửi thông điệp 
 House Car
 lives in (message)
 Tree
 Tom
 11 12
 3
 9/10/18
 Gọi hàm vs. Gửi thông điệp Thông điệp vs. Phương thức
n Gọi hàm (Call function) n Thông điệp
 n Được gửi từ đối tượng này đến đối tượng kia, không bao gồm đoạn 
 n Chỉ ra chính xác đoạn mã nào sẽ được thực hiện. mã thực sự sẽ được thực thi
 n Chỉ có duy nhất một sự thực thi của một hàm với n Phương thức
 một tên nào đó. n Thủ tục/hàm trong ngôn ngữ lập trình cấu trúc 
 n Là sự thực thi dịch vụ được yêu cầu bởi thông điệp
 n Không có hai hàm trùng tên
 n Là đoạn mã sẽ được thực thi để đáp ứng thông điệp được gửi đến 
 cho đối tượng
n Gửi thông điệp
 n Yêu cầu một dịch vụ từ một đối tượng và đối 
 tượng sẽ quyết định cần phải làm gì
 n Các đối tượng khác nhau sẽ có các cách thực thi 
 các thông điệp theo cách khác nhau.
 13 14
 Hướng cấu trúc vs. Hướng ĐT? 1.3. Lớp đối tượng
n Hướng cấu trúc: n Trong thế giới thực có nhiều đối tượng cùng 
 n data structures + algorithms = Program loại.
 n (cấu trúc dữ liệu + giải thuật = Chương trình)
 n Chương trình hướng đối tượng có nhiều đối 
n Hướng đối tượng: tượng cùng loại chia sẻ những đặc điểm 
 n objects + messages = Program chung.
 n (đối tượng + thông điệp = Chương trình)
 n Ví dụ
 15 16
 4
 9/10/18
 Lớp Ví dụ Lớp Xe đạp
n Một lớp là một thiết kế (blueprint) hay mẫu Khai báo cho lớp 
 (prototype) cho các đối tượng cùng kiểu XeDap
 n Ví dụ: lớp XeDap là một thiết kế chung cho nhiều đối Đối tượng của lớp 
 tượng xe đạp được tạo ra XeDap
n Lớp định nghĩa các thuộc tính và các phương thức
 chung cho tất cả các đối tượng của cùng một loại nào
 đó
n Một đối tượng là một thể hiện cụ thể của một lớp.
 n Ví dụ: mỗi đối tượng xe đạp là một thể hiện của lớp
 XeDap
n Mỗi thể hiện có thể có những thuộc tính thể hiện
 khác nhau
 n Ví dụ: một xe đạp có thể đang ở bánh răng thứ 5 trong
 khi một xe khác có thể là đang ở bánh răng thứ 3. 
 17 18
 Nội dung 2. Công nghệ đối tượng (OT)
1. Lập trình hướng đối tượng n Công nghệ đối tượng là 
 một tập các quy tắc 
2. Công nghệ hướng đối tượng
 (trừu tượng hóa, đóng 
3. Ngôn ngữ lập trình Java gói, đa hình), các hướng 
4. Ví dụ và bài tập dẫn để xây dựng phần 
 mềm, cùng với ngôn 
 ngữ, cơ sở dữ liệu và 
 các công cụ khác hỗ trợ 
 các quy tắc này.
 (Object Technology - A Manager’s Guide, Taylor, 1997)
 19 20
 5
 9/10/18
 Đặc tính của LT HĐT 2.1. Lịch sử phát triển của OT
n Alan Kay đã tổng hợp các đặc tính của LT HĐT: n Các mốc chính của công nghệ đối tượng
 n 1. Tất cả đều là đối tượng. 
 n 2. Chương trình phần mềm có thể coi là một tập hợp Simula C ++ The UML
 các đối tượng tương tác với nhau
 n 3. Mỗi đối tượng trong chương trình có các dữ liệu 1967 Late 1980s 1996
 độc lập của mình và chiếm bộ nhớ riêng của mình. 1972 1991 2004
 n 4. Mỗi đối tượng đều có dạng đặc trưng của lớp các 
 đối tượng đó. Smalltalk Java UML 2
 n 5. Tất cả các đối tượng thuộc về cùng một lớp đều 
 có các hành vi giống nhau
 21 22
 2.2. OT được sử dụng ở đâu? 2.2. OO được sử dụng ở đâu? (2)
n Các hệ thống Client/Server và phát triển n Hệ nhúng (embedded system)
 Web n Hệ thống thời gian thực (real-time)
 n Công nghệ đối tượng cho phép các hệ thống 
 n Công nghệ đối tượng cho 
 phép các công ty đóng gói thời gian thực có thể phát triển với chất 
 thông tin doanh nghiệp trong lượng cao hơn và linh hoạt hơn
 các đối tượng và giúp phân n Hệ thống vệ tinh 4
 phối quá trình xử lý qua n Các hệ thống quốc phòng 
 mạng Internet hoặc một và hàng không vũ trụ
 mạng máy tính. n 
 23 24
 6
 9/10/18
 2.3. Các nguyên lý cơ bản của OO a. Trừu tượng hóa (Abstraction)
 n Là quá trình loại bỏ đi các thông tin/tính chất cụ thể 
 và giữ lại những thông tin/tính chất chung.
 Hướng đối tượng
 n Tập trung vào các đặc điểm cơ bản của thực thể, 
 các đặc điểm phân biệt nó với các loại thực thể 
 khác.
 n Phụ thuộc vào góc nhìn
 kế n Quan trọng trong ngữ cảnh này nhưng lại không có ý 
 hình nghĩa nhiều trong ngữ cảnh khác.
 hóa
 Trừu 
 tượng 
 Đa
 Thừa
 Đónggói 
 25 26
 Ví dụ: Trừu tượng hóa b. Đóng gói (Encapsulation)
 Sinh viên Giáo viên
Khóa học diễn ra lúc 9:00 sáng các ngày thứ 3, 5, 7
 Khóa học (ví dụ đại số)
 27 28
 7
 9/10/18
 b. Đóng gói (Encapsulation) b. Đóng gói (Encapsulation)
 n Che giấu, ẩn đi chi tiết thực hiện bên trong
 n Cung cấp cho thế giới bên ngoài một giao diện
 n Lợi ích: Người dùng không phụ thuộc vào Class: Professor
 việc sửa đổi sự thực thi bên trong
 Attribute: hireDate
 Attribute: name
 Method: getName()
 Method: setHireDate (Date hireDate)
 Tăng cường tính mềm dẻo 29 30
 Minh họa việc đóng gói c. Thừa kế (Inheritance)
n Giáo sư Clark có thể Gia tăng mức độ 
 Giáo sư Clark trừu tượng hóa
 dạy 4 lớp trong học AcceptCourseOffering() Vehicle
 kỳ tới (thay vì tối
 đa 3 lớp như các
 học kỳ trước) Automobile Motorcycle Bus
 Name: J Clark
 Employee ID: 567138
 SubmitFinalGrades()HireDate: 07/25/1991
 Status: Tenured
 SetMaxLoad(4) SetMaxLoad()
 Discipline: Finance
 MaxLoad:4 Sedan Sports Car School Bus Luxury Bus
 Giảm mức độ 
 trừu tượng hóa
 TakeSabbatical()
 31 35
 35
 8
 9/10/18
 d. Đa hình (polymorphism) Nội dung
 n Đa hình: “one name, many forms” 1. Lập trình hướng đối tượng
 n Nạp chồng phương thức (Method overloading)
 2. Công nghệ hướng đối tượng
 n Add(int x, int y)
 n Add(float x, float y) 3. Ngôn ngữ lập trình Java
 n Add(float x, float y, float z)
 4. Ví dụ và bài tập
 n Ghi đè phương thức (Method Overriding)
 n Một Intern (thực tập sinh) là một Intern, đồng thời
 cũng có thể được xem là một Staff (nhân viên)
 n Phương thức quẹt thẻ của Intern khác với phương
 thức quẹt thẻ của Staff
 36 37
 3.1. Java là gì? 3.1. Java là gì?
n Java là một ngôn ngữ lập trình HĐT được phát triển n Ngày nay, nhắc đến Java, không còn nhắc 
 bởi Sun Microsystems. đến như một ngôn ngữ mà còn là một công 
n Java là một ngôn ngữ lập nghệ, một nền tảng phát triển.
 trình khá trẻ n Java có một cộng đồng phát triển mạnh mẽ
 n Ban đầu được sử dụng để xây 
 n Một tập hợp các thư viện với số lượng lớn (từ 
 dựng ứng dụng điều khiển các Sun và các nguồn khác)
 bộ xử lý bên trong các thiết bị 
 điện tử dân dụng như máy điện 
 thoại cầm tay, lò vi sóng
 n Bắt đầu được sử dụng từ năm 
 Green Team and James Gosling 
 1995 (the leader)
 38 39
 9
 9/10/18
 J2SE: Cung cấp các thành phần 
 3.2. CácJ2EE: ấn Xây bản dựng d ựcủaa trên n ềJavan J2SE (Java 2 Platform Standard Edition)
 cốt lõi nhất để txâyảng cáccủa ứJ2SE,ng cung cấp các 
 dụng desktop, server.
 tính năJ2ME:ng để xâyCung dự cngấp mmộộtt môi trường 
 Java Card: Cung cấp môi 
 nền tảngm đầạnhy đủmẽ, ,ổ linhn đị nh,hoạ ant cho các ứng n 
 toàn và dnhanhụngtr ch ườđểạy ngxây trên an d ựdi toànng độ ng ch vàạy các trên 
 các ứngthi dếụt ngbị nhúngdoanhcác thkhácnghiẻ thôngệ (PDAs,p minh bộ gi ải n Java 2 Runtime Environment, Standard Edition (J2RE):
 (smart card) và các thiết 
 mã cáp truyền hình, máy in) n Môi trường thực thi hay JRE cung cấp các Java API, máy 
 bị giới hạn về bộ nhớ và ảo Java (JVM) và các thành phần cần thiết khác để chạy 
 khả năng xử lý.
 các applet và các ứng dụng viết bằng Java.
 n Java 2 Software Development Kit, Standard Edition (J2SDK)
 n Tập mẹ của JRE, và chứa mọi thứ nằm trong JRE, bổ 
 sung thêm các công cụ như là trình biên dịch và các trình 
 gỡ lỗi cần để phát triển applet và các ứng dụng.
 40 41
 J2EE (Java 2 Platform Enterprise Edition) Lịch sử phát triển của J2SE
n  n JDK 1.1.4 (Sparkler): 12 tháng 9, 1997
n Service-Oriented Architecture (SOA) và Web n JDK 1.1.5 (Pumpkin): 3 tháng 12, 1997
 services n JDK 1.1.6 (Abigail): 24 tháng 4, 1998
n Các ứng dụng Web n JDK 1.1.7 (Brutus): 28 tháng 9, 1998
 n Servlet/JSP n JDK 1.1.8 (Chelsea): 8 tháng 4, 1999
 n JSF n J2SE 1.2 (Playground): 4 tháng 12, 1998
n Các ứng dụng doanh nghiệp n J2SE 1.2.1 (none): 30 tháng 3, 1999
 n EJB n J2SE 1.2.2 (Cricket): 8 tháng 7, 1999
 n JavaMail
 n J2SE 1.3 (Kestrel): 8 tháng 5, 2000
n 
 n J2SE 1.3.1 (Ladybird): 17 tháng 5, 2001
 43 44
 10
 9/10/18
 Lịch sử phát triển của J2SE (2) 3.2. Nền tảng của Java (Java platform)
n J2SE 1.4.0 (Merlin) 13 tháng 2, 2002 n Platform là môi trường 
 phát triển hoặc triển khai.
n J2SE 1.4.1 (Hopper) 16 tháng 9, 2002
 n Java platform có thể chạy 
n J2SE 1.4.2 (Mantis) 26 tháng 6, 2003 trên mọi hệ điều hành
n J2SE 5 (1.5.0) (Tiger) 29 tháng 9, 2004 n Các platform khác phụ thuộc 
 vào phần cứng
n
 Java SE 6 (Mustang), 11 tháng 12, 2006 n Java platform cung cấp:
 n Các bản cập nhật 2 và 3 được đưa ra vào năm 2007 n Máy ảo Java - Java Virtual 
 Machine (JVM).
 n Bản cập nhật 4 đưa ra tháng 1 năm 2008.
 n Giao diện lập trình ứng dụng -
n Java SE 7 (Dolphin), 4/2008. Application Programming 
 Interface (API).
 45 46
 3.3. Mô hình dịch của Java 3.3. Mô hình dịch của Java (2)
n a. Mô hình biên dịch truyền thống: n b. Mô hình dịch của Java:
 n Mã nguồn được biên dịch thành mã nhị phân. n Mã nguồn được 
 %javac Hello.java
 biên dịch thành Hello.class created
 %cc Hello.c –o Hello
 % java Hello
 % Hello bytecode rồi được 
 thông dịch bởi JVM. Run JVM Byte Code
 Run Binary Code
 47 48
 11
 9/10/18
 3.3. Mô hình dịch của Java (3) 3.4. Các tính năng của Java
n Máy ảo Java (Java Virtual Machine): n Java được thiết kế:
 n Máy ảo Java là trái tim của ngôn ngữ Java n Ngôn ngữ lập trình mạnh, đầy đủ tính năng và 
 n Đem đến cho các chương trình Java khả năng viết một lần nhưng thuần hướng đối tượng.
 chạy được ở mọi nơi
 n
 n Tạo ra môi trường bên trong để thực thi lệnh: Dễ học, cú pháp tương tự như C++
 n Nạp các file .class n Độc lập nền tảng
 n Quản lý bộ nhớ 
 n Hỗ trợ phát triển các ứng dụng trong môi trường 
 n Dọn “rác”
 mạng
 n Trình thông dịch “Just In Time - JIT”
 n Chuyển tập lệnh bytecode thành mã máy cụ thể cho từng loại n Lý tưởng cho các ứng dụng Web
 CPU.
 49 50
 3.4. Các tính năng của Java (2) 3.4. Các tính năng của Java (3)
n Mạnh mẽ n Đơn giản
 n Thư viện lớp: Hàng trăm lớp được viết trước với nhiều n Từ khóa
 các phương thức tiện ích. n Java có 50 từ khóa
 n So với Cobol hay VB có tới hàng trăm từ khóa
 n Java sử dụng mô hình con trỏ không cho phép truy cập 
 trực tiếp vào bộ nhớ; bộ nhớ không thể ghi đè. n Có ý nghĩa đặc biệt trong ngôn ngữ
 n Được sử dụng để viết các câu lệnh
n Hướng đối tượng
 n Network capable
 n Java hỗ trợ phát triển phần mềm bằng cách sử dụng khái 
 niệm “đối tượng” n Java hỗ trợ phát triển các ứng dụng phân tán
 n Một số loại ứng dụng của Java được thiết kế để được 
 n Phần mềm được phát triển sử dụng Java bao gồm các 
 lớp và các đối tượng truy cập thông qua trình duyệt Web.
 51 52
 12
 9/10/18
 3.4. Các tính năng của Java (3) 3.4. Các tính năng của Java (4)
n Java có 50 từ khóa n Bảo mật
 n assert (New in 1.5) enum (New in 1.5) n Java authentication dựa vào các phương 
 pháp mã hóa khóa công khai
 n Mô hình con trỏ Java bảo vệ dữ liệu riêng tư 
 trong các đối tượng và ngăn các ứng dụng 
 chưa được authorized không được phép truy 
 cập cấu trúc dữ liệu
 53 54
 3.4. Các tính năng của Java (5) 3.4. Các tính năng của Java (6)
n Đa luồng (Multi-threaded) n Các môi trường phát triển
 n Cho phép chương trình của bạn chạy nhiều hơn một tác n Java Development Kit
 vụ tại cùng một thời điểm.
 n Miễn phí trên Sun Website: java.sun.com
n Khả chuyển (Portable) n Bao gồm: Trình biên dịch, JVM và các lớp đã có
 n Các chương trình có thể viết và biên dịch một lần, rồi n Integrated Development Environments (IDEs): 
 chạy trên các nền tảng khác Cung cấp:
 n Nhờ mô hình biên dịch/thông dịch
 n Các trình soạn thảo phức tạp
 (WORE – Write Once, Run Everywhere)
 n Các công cụ gỡ lỗi
 n Các công cụ phát triển đồ họa
 55 56
 13
 9/10/18
 3.5. Các kiểu chương trình Java 3.5. Các kiểu chương trình Java (2)
n Ứng dụng (Application) n Ứng dụng Web (Web application)
 n Không cần chạy trên các trình duyệt
 n Tạo ra các nội dung động trên server thay cho 
 n Có thể gọi các chức năng thông qua dòng lệnh hoặc 
 menu lựa chọn (đồ họa) trên trình duyệt.
 n Phương thức main() là điểm bắt đầu thực hiện ứng dụng n Chạy trong các ứng dụng server
n Applet n Servlet: Kiểm soát các yêu cầu từ trình duyệt và 
 n Chương trình đồ họa chạy trên trình duyệt tại máy trạm trả lại các phản hồi
 (client).
 n JavaServer Page (JSP): Các trang HTML được 
 n Có thể được xem bằng appletviewer hoặc nhúng trong 
 trình duyệt Web có cài JVM. nhúng với mã Java.
 57 58
 Nội dung Ví dụ 1 - HelloWorld
 // HelloWorld.java
1. Lập trình hướng đối tượng
 // Chuong trinh hien thi dong chu “Hello World”
2. Công nghệ hướng đối tượng public class HelloWorld { 
 /* Phuong thuc main se duoc goi dau tien 
3. Ngôn ngữ lập trình Java trong bat cu ung dung Java nao*/
 public static void main(String args[]){
4. Ví dụ và bài tập
 System.out.println( “Hello World!" );
 } // ket thuc phuong thuc main
 } // ket thuc lop HelloWorld
 59 60
 14
 9/10/18
 Ví dụ 1 (tiếp) Cài đặt và chạy thử chương trình Java
n Chú thích (Comment) n Bước 1: Cài đặt j2sdk1.5/6/7, cài đặt các biến môi trường 
 (nếu dùng cmd)
 n Trên 1 dòng: Bắt đầu bằng: //
 n Bước 2: Cài trình soạn thảo 
 n Nhiều dòng: /* ... */ TextPad/JCreator/NetBean/Eclipse
n Java phân biệt chữ hoa chữ thường n Bước 3: Lập trình/Viết mã nguồn
 n Bước 4: Dịch
n Từ khóa có sẵn của Java:
 n cmd: javac HelloWorld.java
 n
 class: Khai báo lớp n Textpad: Ctrl + 1
 n public: Quy định phạm vi truy cập n JCreator: F7 hoặc Build à Build Project/File
n Tên lớp chứa hàm main phải trùng với tên n Bước 5: Chạy chương trình
 file .java. n cmd: java HelloWorld.class
 n Textpad: Ctrl + 2
 n JCreator: F5 hoặc Run à Run Project/File
 61 62
 Biến môi trường
n PATH = ;C:\Program Files\Java\jdk1.6\bin
n CLASSPATH = C:\Program 
 Files\Java\jdk1.6\lib;.;C:\Program 
 Files\Java\jdk1.6\include
 63 64
 15
 9/10/18
 Ví dụ 2 - GUI Ví dụ 3 – Nhập, xuất dữ liệu
import javax.swing.JOptionPane; import javax.swing.JOptionPane;
public class FirstDialog{ public class HelloNameDialog{
 public static void main(String[] args){
 public static void main(String[] args){
 String result;
 JOptionPane.showMessageDialog(null, result = JOptionPane.showInputDialog(“Hay nhap 
 ”Xin chao ban!”); ten ban:”);
 System.exit(0); JOptionPane.showMessageDialog(null,
 ”Xin chao “+ result + “!”);
 }
 System.exit(0);
} }
 }
 65 66
 Ví dụ 4 Bài tập:
import java.util.Scanner;
 n 1. Viết chương trình nhập hai số nguyên và 
public class Demo {
 public static void main(String[] args) { hiển thị tổng, hiệu, tích và thương của 2 số 
 Scanner s = new Scanner(System.in); nguyên vừa nhập
 System.out.print("Nhap i = ");
 int i = s.nextInt();
 System.out.println(i);
 System.out.print("Nhap l = ");
 long l = s.nextLong();
 System.out.println(l);
 s.close();
 }
} 67 68
 16

File đính kèm:

  • pdfbai_giang_lap_trinh_huong_doi_tuong_chuong_1_tong_quan_ve_oo.pdf