Bài giảng Lập trình hướng đối tượng: Chương 1 - ĐH Bách Khoa Hà Nội

16 17 0
Bài giảng Lập trình hướng đối tượng: Chương 1 - ĐH Bách Khoa Hà Nội

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin 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 cung cấp cho người học những kiến thức như: Lập trình hướng đối tượng; Công nghệ hướng đối tượng; Ngôn ngữ lập trình Java; Ví dụ và bài tập. Mời các bạn cùng tham khảo!

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

Ngày đăng: 20/06/2021, 09:05

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan