1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu lập trình hướng đối tượng Java căn bảnOOP

238 916 13

Đ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

Thông tin cơ bản

Định dạng
Số trang 238
Dung lượng 4,74 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

10 © Vũ Duy Linh Các đặc tính Java 1  Thân thiện, đơn giản và nhỏ gọn Familiar, simple, small  Được biên dịch Compiled và được thông dịch Interpreted  An toàn, bảo mật Secure: Kiểm

Trang 1

Giảng viên: Vũ Duy Linh Email: vdlinh@ctu.edu.vn

LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG JAVA

Object-Oriented Programming in Java

Version 1.1

Trang 2

Chương 1 Tổng quan về ngôn ngữ lập trình Java

Giảng viên: Vũ Duy Linh Email: vdlinh@ctu.edu.vn

Trang 3

3

© Vũ Duy Linh Java – Giới thiệu

 Là ngôn ngữ lập trình mới, được phát triển bởi Sun Microsystems vào năm 1991

 Phiên bản đầu tiên gọi là Oak do James Gosling phát triển

 Năm 1995 tên chính thức được gọi là Java

 Một số Nhà phát triển Java: James Gosling, Arthur Van, Karl Jacob và một số nhân vật nổi bật khác

Trang 4

4

© Vũ Duy Linh Tổng quan về Java SE 7

Java SE Development Kit (JDK) 7 và Java SE Runtime Environment (JRE) 7:

Trang 5

5

© Vũ Duy Linh Môi trường JRE

 Máy tính ảo Java (Java Virtual

Machine): Sẽ tạo ra một môi trường để thực thi các lệnh bằng cách nạp các file.class, quản lý

bộ nhớ và dọn rác,…

Mã nguồn

Trang 6

6

© Vũ Duy Linh Sơ đồ thực thi chương trình

Với Java, mọi hệ điều hành là một!

Tập tin mã nguồn java Mã trung gian - Byte code Mã máy - Machine code 

Mã nhị phân -Binary code

Trang 7

7

© Vũ Duy Linh Cấu trúc thư mục chương trình

Byte code files

Source code files

Trang 8

8

© Vũ Duy Linh Sự khác biệt giữa 2 loại kiến trúc mã

Kiến trúc phụ thuộc (Architecture dependent): SưCSử dụng

kiến trúc mã không trung gian Các ngôn ngữ như: C/C++, Pascal

Trang 9

9

© Vũ Duy Linh Sự khác biệt giữa 2 loại kiến trúc mã

Kiến trúc độc lập (Architecture independent): Sử dụng kiến trúc mã

trung gian mà ngôn ngữ Java đã tạo nên một cuộc cách mạng mới: Write once, run anywhere

/* Giống nhau với mọi platform */

/* Khác nhau trên mỗi flatform */

Trang 10

10

© Vũ Duy Linh Các đặc tính Java (1)

 Thân thiện, đơn giản và nhỏ gọn (Familiar, simple, small)

 Được biên dịch (Compiled) và được thông dịch (Interpreted)

 An toàn, bảo mật (Secure): Kiểm tra an toàn trước từng bước (ngôn ngữ  biên dịch  thực thi: tính đóng gói  java  class  class loader  machine code)  Từ bên ngoài không thể xâm nhập vào chương trình được

 Kiến trúc mã trung gian (Architecture neutral ): Sinh mã bytecode - Độc lập với hệ điều hành và có thể chạy ở mọi hệ điều hành

(platform)

 Khả chuyển (Portable): JVM dựa trên nền tảng chính POSIX (Portable Operating System Interface [for Unix]) – Giao diện hệ điều hành linh động: cung cấp mã nguồn di động cho các thiết bị đầu cuối, ngoại vi

Trang 11

11

© Vũ Duy Linh Các đặc tính Java (2)

 Hướng đối tượng (Object-oriented)

 Hiệu suất cao (High performance): Có cơ chế hỗ trợ trình thông dịch chạy ở tốc độ tối đa, cơ chế dọn rác (garbage) tự động,…

 Mạnh mẽ (Robust): Định kiểu mạnh, tường minh

 Phân tán (Distribution): Hỗ trợ TCP, UDP, Socket và Network communication: Applets, servlets, aglets – hệ thống mobile agents, remote method invocation (RMI), Common Object Request Broker Architecture (CORBA)

 Đa tuyến đoạn (Multithreads)

 Tính động (Dynamic): Ở thời điểm run-time, các file.class được liên kết khi cần

Trang 12

12

© Vũ Duy Linh Một số khác biệt với C++

 Không có Typedefs, Defines, hoặc Preprocessor

 Không có biến toàn cục: "Global variables are bad"

 Không hỗ trợ lệnh Goto

 Không có con trỏ số học (pointer arithmetic): Trong

Java, hầu hết sự phức tạp và rắc rối cố hữu liên quan đến con trỏ đều được bỏ đi nhằm tạo ra một ngôn ngữ trong sáng, giản đơn

 Không hỗ trợ các cấu trúc không an toàn: Java không

có kiểu struct

 Không có đa thừa kế (Multiple inheritance)

 Không có nạp chồng toán tử (Operator overloading)

 Không có ép kiểu tự động (Automatic coercions)

Trang 14

14

© Vũ Duy Linh Các loại chương trình của Java

 Có thể phát triển 2 loại chương trình Java:

 Các chương trình chạy độc lập (Stand-alone applications): Có chứa phương thức “main” và có thể chạy từ dòng lệnh thông qua trình thông dịch Java

 Các chương trình Web (Web applications/ applets): Không chứa phương thức “main” và là chương trình được nhúng vào trang web và được chạy khi trang web được duyệt

Trang 15

15

© Vũ Duy Linh Java Development Kit

javac: Trình biên dịch java

java: Trình thông dịch java: Chạy ứng dụng độc lập

 jdb : Gỡ rối (Java Debugger)

 appletviewer : Chạy ứng dụng applets

 javap - to print the Java bytecodes

 javaprof - Java profiler

 javadoc - documentation generator

 javah - creates C header files

Trang 16

16

© Vũ Duy Linh Ứng dụng Standalone

Java source: Hello_StandAloneApp.java

public class Hello_StandAloneApp {

public static void main(String args[]) {

System.out.println("Hello! Stand alone application.");

Trang 17

17

© Vũ Duy Linh Ứng dụng applet

Java source: Hello_AppletApp.java

import java.applet.Applet;

import java.awt.*;

public class Hello_AppletApp extends Applet {

public void paint(Graphics g) {

g.drawString ("Hello! Applet application.", 25, 25);

}

}

Tạo trang web: Hello_AppletApp.html

<HTML>

<TITLE> JAVA APPLET APPLICATION</TITLE>

<APPLET CODE="Hello_AppletApp.class” width=250 height=100>

</APPLET>

</HTML>

Trang 18

18

© Vũ Duy Linh Duyệt trang web

Duyệt trang web bằng trình duyệt FireFox, IE,…

Address: [path] Hello_AppletApp.html

Trang 19

19

© Vũ Duy Linh Cài đặt môi trường phát triển ứng dụng Java

Gồm 2 bước:

cụ phát triển Java, bao gồm cả môi trường JRE (Java Runtime Environment) vào hệ thống máy tính để chạy Java applications và Applets

a Đơn giản: NotePad, WordPad, EditPlus,…

JDeveloper IDE, JCreator IDE

Trang 20

20

© Vũ Duy Linh Số liệu thống kê

Lịch sử 2004-2013:

Trang 21

21

© Vũ Duy Linh Số liệu thống kê (3)

 Hiện tại năm 2014:

Trang 22

22

© Vũ Duy Linh Số liệu thống kê (2)

Ngôn ngữ kịch bản (Client-side scripting):

Trang 23

Chương 2 Kiểu dữ liệu và cấu trúc lệnh điều khiển

Giảng viên: Vũ Duy Linh Email: vdlinh@ctu.edu.vn

Trang 24

5 public class ProgramName{

6 // Khai báo các biến

7

8 // Định nghĩa các phương thức

9

10 //Định nghĩa phương thức main

11 public static main(String args[]){

12 // Phần thân phương thức main

Ở phần cơ bản này, chúng ta sử dụng phương pháp lập trình dựa

trên đối tượng Object-Based Programming (OBP) để minh hoạ:

Trang 25

25

© Vũ Duy Linh Chương trình Java cơ bản

1 /* Author: Vũ Duy Linh

2 Topic: A very simple stand-alone application in java

3 File name: HelloWorld java

4 */

5 import java.lang.*;

6 public class HelloWorld {

7 public static void main( String args[ ] ) {

8 System.out.println( “Hello world! " );

9 }

10 }

import: Từ khóa khai báo sử dụng gói (package) cần có trong chương trình

class: Từ khóa khai báo lớp

public, static: Access modifiers – các bổ từ truy cập

void: Kiểu giá trị trả về của phương thức

args[ ]: Các đối số nhập từ dòng lệnh

Trang 26

26

© Vũ Duy Linh Biên dịch và thực thi

 Biên dịch

Out file: HelloWorld.class

 Thực thi

Kết quả: Hello world!

Trang 27

27

© Vũ Duy Linh Một số lưu ý thêm (1)

 Gói java.lang.* được import một cách mặc định nên lệnh

System.out.println(); chính là java.lang System.out.println();

 Tên đầy đủ - Fully qualified name

Trang 28

28

© Vũ Duy Linh Một số lưu ý thêm (2)

 Cách sử dụng đối số từ dòng lệnh:

 Gõ lệnh: java FullName_App Vu Duy Thuc

 Các đối số: args[0] = Vu , args[1] = Duy , args[2] = Thuc

 Từ khoá public: Phạm vi truy cập mọi nơi

 Phương thức static: là phương thức chỉ được phép truy cập tới các biến static của lớp (do đã được fix sẵn bộ nhớ) và có thể gọi mà không cần khởi tạo đối tượng của lớp chứa nó

 Từ khoá void: Phương thức không trả về (return;) giá trị nào cả

Trang 29

29

© Vũ Duy Linh Tính căn bậc 2

// CanBac2.java

import java.lang.Math;

public class CanBac2 {

public static void main(String args []) {

Trang 30

float 32 bit -3.40292347E+38 đến +3.40292347E+38

double 64 bit -1.79769313486231570E+308 đến

+1.79769313486231570E+308

Kiểu nguyên thuỷ (Primitive data type): là

kiểu mà các phép toán được dịch trực tiếp

sang các lệnh của máy (operational data)

Trang 31

31

© Vũ Duy Linh Biến

biến gồm một số ô nhớ được định danh (duy nhất) bởi một định danh, đó chính là tên biến Đây là cách thức thường xuyên được dùng trong lập trình, dùng để chứa một giá trị nào đó có thể thay đổi trong quá trình thực thi chương trình

 Quy tắc đặt tên biến

 Bắt đầu bằng chữ cái, dấu gạch dưới (_) hoặc dấu dollard ($), không

có khoảng trắng giữa tên, không trùng với các từ khoá,… Lưu ý:

Java phân biệt chữ hoa chữ thường

 Ví dụ:

• Tên biến đúng: myList1, double_X1, luongCoBan,…

• Tên biến sai: my List1, 2nghiem, luong-Co-Ban,…

Cách khai báo và khởi tạo:

Cách 1: kiểu_nguyên_thuỷ tên_Biến;

tên_Biến = giá_trị;

Cách 2: kiểu_nguyên_thuỷ tên_Biến = giá_trị;

Trang 32

32

© Vũ Duy Linh Kiểu dữ liệu nguyên thủy (2)

 Mỗi biến được khai báo chỉ tồn tại trong phạm vi (scope) của nó – tương tự như ngôn ngữ C đã học

 Các ví dụ:

Khai báo (tên) biến a kiểu (nguyên thuỷ) int, gán giá trị của biến a bằng 40

int a; a = 40;

 a: tên biến, kiểu là int, và giá trị của a là 40

double diemThi =9.5; //biến số thực diemThi bằng 9.5

int octVal = 032; int hexVal = 0x1a; char characterC = 'C';

unicodeC='\u1EE9'; (Java sử dụng UTF-16)

String hoTen = "Ch \u00e0 o b \u00e9 : V \u0169 \u0020 Duy \u0020 Th \u1EE9 c!"

0

a

40

a

Trang 33

33

© Vũ Duy Linh Cấp phát trên bộ nhớ

Cho đoạn lệnh Java:

int a = 10; int b;

b = a; a += 10;

Trang 34

34

© Vũ Duy Linh Hằng

Hằng (Constant): cũng tương tự như biến ngoại trừ nó giữ một

giá trị cố định (hay được gọi là các biến chỉ đọc)

Chúng được khai báo bởi từ khóa final

final int SI_SO = 100;

final double PI = 3.1428;

 Kiểu chữ in hoa thường được dùng để đặt tên cho các hằng

Trang 35

double bk = 5.5; // ban kinh double dt; // dien tich

dt = PI * bk * bk

System.out.println("Ban kinh= "+ bk + ", dien tich= " + dt);

} }

Trang 36

Với: boolean_expression: Là biểu thức lô-git đúng/sai,

statement: Biểu thức tính/câu lệnh

Trang 38

38

© Vũ Duy Linh switch (2)

Kết quả: Gia tri bien c KHONG la 'a' hoac 'b' ma la 'V'

Ví dụ:

Trang 40

40

© Vũ Duy Linh

while (boolean_expression) { statement(s)

}

 Sẽ lặp cho đến khi điều kiện trở thành false

Lệnh lặp While

Trang 42

 Return_type: Kiểu dữ liệu của kết quả trả về

• void: Không trả về giá trị nào cả (return; )

• Chỉ có thể trả về tối đa giá trị của một kiểu dữ liệu

 Ví dụ: phương thức tính diện tích hình tròn có 1 tham số hình thức

protected double tinhDienTich( double r){

return (Math.PI*Math.pow(r,2);

}

Phương thức

Trang 43

43

© Vũ Duy Linh Ví dụ

 Giải phương trình bậc 2 theo OBP, gồm 2 lớp: PTB2 và LopChinh

Trang 44

44

© Vũ Duy Linh Ví dụ (2)

Trang 45

Chương 3 Khái niệm về thiết kế hướng đối tượng

Giảng viên: Vũ Duy Linh Email: vdlinh@ctu.edu.vn

Trang 46

46

© Vũ Duy Linh Các mẫu hình lập trình

 Mẫu hình lập trình tuần tự (Imperative paradigm)

 Mẫu hình lập trình mô tả (Declarative paradigm)

 Lập trình hàm (Functional programming)

 Lập trình logic (Logic programming )

 Mẫu hình lập trình hướng đối tượng (Object-oriented paradigm)

 Mẫu hình lập trình hướng định dạng/khía cạnh (Aspect-oriented

paradigm)

Trang 47

47

© Vũ Duy Linh Mô hình lập trình tuần tự

 Phục vụ cho thời kỳ đầu máy tính và ngôn ngữ asembler

 Cách làm tuần tự từng bước by-step) để cụ thể hóa bài toán được làm như thế nào (how to get sth)

(step- Các biến được đại diện trong bộ nhớ

 Sử dụng lệnh gán để thay đổi trị biến

 Các ngôn ngữ tiêu biểu: Algol, Pascal, C, Ada

procedure Fibo(n: integer);

var a, b, kq: integer;

begin

a := 0; b:=1;kq:=0;

while (kq < n) do begin

kq := q + b; write(kq:4);

a = b; b = kq;

end;

end;

Trang 48

 Ước lượng các hàm toán học

 Không làm thay đổi dữ liệu

 Chương trình chính là một tập các hàm

 Các ngôn ngữ tiêu biểu: Lisp, Refal, Perl, Planer,…

 Lập trình logic:

 Xác định kết suy diễn của bài toán là thành công hay thất bại

 Dựa vào một tập các phép logic được định nghĩa: các sự kiện/tiên đề, các luật logic

 Các nguyên lý hợp nhất (Unification), nguyên lý giải (Resolution)

 Ngôn ngữ tiêu biểu: Prolog

Mô hình lập trình mô tả

Trang 49

Bài toán n! được định nghĩa là:

“bằng 1 nếu n <=1 ngược lại bằng n*(n-1)!

Bài toán n! được định nghĩa theo cú pháp Prolog

F is N * Fm

Trang 50

50

© Vũ Duy Linh Mô hình lập trình hướng đối tượng

 Dựa trên nền tảng đối tượng (Object)

 Chương trình bao gồm nhiều tập quần thể đối tượng khác nhau, mỗi quần thể đối tượng thuộc vào một loài/ loại/ lớp (Class) riêng biệt

 Sự thực thi chương trình là

sự trao đổi thông điệp (messages) giữa các đối tượng với nhau

 thuần OOP: Mọi thứ là đối tượng ngay cả các kiểu nguyên thủy (primitives)

 Ngôn ngữ thuần OOP:

Smalltalk, Eiffel

1 lớp Xe

4 chiếc xe 

4 đối tượng thuộc lớp Xe

Trang 51

51

© Vũ Duy Linh Kết hợp các mô hình

Trang 52

52

© Vũ Duy Linh Quá trình phát triển chương trình HĐT

1 Đặc tả bài toán  2 Phân rã bài toán  3 Phân tích các thực thể tồn

tại trong bài toán (Trừu tượng hoá) 

4 Viết mã lệnh Java  5 Kiểm thử

Trang 53

53

© Vũ Duy Linh Sự ánh xạ thế giới thực vào OOP

- Được hực hiện thông qua

sự trừu tượng hóa

- Sự trừu tượng hóa: là

quá trình xác định các thuộc tính và các hành động liên quan đến mỗi thực thể trong môi trường ứng dụng đang được phát triển (có nhiều đối tượng thuộc các loại khác nhau)

Trang 54

54

© Vũ Duy Linh Sự trừu tượng hóa - Abstraction

Trừu tượng dữ liệu ( Data abstraction): là các đặc tính (properties) của kiểu dữ liệu

và sự cài đặt cụ thể nó  Định nghĩa kiểu dữ liệu (thực thể) ở mức trừu tượng interface

Sự trừu tượng hoá điều khiển ( Control abstraction): Là sự trừu tượng các thao tác/

phép toán ở mức thấp Các ngôn ngữ lập trình đã làm sẵn việc này, giúp giảm bớt công sức của lập trình viên

Rất đơn giản nếu sử dụng NNLT bậc cao, “mệt” nếu sử dụng ngôn ngữ máy (Machine language)

Tính toán, xử lý ntn để

có kết quả a = 15?

Trang 55

55

© Vũ Duy Linh Sự trừu tượng hóa - Abstraction

Class (kiểu dữ liệu thực thể): Là sự kết hợp của data abstraction + Control abstraction

Trang 56

56

© Vũ Duy Linh Các đặc tính Java hướng đối tượng

Java

OOP Paradigm

Encapsulation

Multiple Inheritance

Delegation Concurrency

Polymorphism Single Inheritance Abstraction

Persistence

Genericity

Trang 57

57

© Vũ Duy Linh Sự đóng gói - Encapsulation

Sự đóng gói: Là việc cài đặt mã lệnh cho các phương thức nội tại và cách

thức truy xuất các thuộc tính của lớp thành một đơn vị duy nhất  Cung cấp một cơ chế bảo vệ dữ liệu (đối tượng): che dấu và bảo vệ dữ liệu khỏi người dùng (can thiệp hoặc thao tác sai mục đích)

Outside code: Phần nhìn thấy cho người dùng Inside code: Phần che

khuất khỏi người dùng

Trang 58

58

© Vũ Duy Linh Sự trừu tượng - Abstraction

 OOP sử dụng cả data và control abstraction

 Abstraction  Class: tập các thuộc tính và thao tác (phương thức)

 Lớp GiangVien: có 3 thuộc tính và 2 phương thức

3 Attributes

2 Operations

V

V

Trang 59

59

© Vũ Duy Linh Thừa kế- Inheritance

Thừa kế (Inheritance): Là một cơ chế cho

phép lập trình viên định nghĩa một lớp con

mới (Child/ sub/ derived class) bằng cách

mở rộng từ (các) lớp cha (Parent/ super/

base class) đã tồn tại Đây là đặc tính nổ

bật nhất của OOP và là một cuộc cách

mạng của lĩnh vực công nghệ phần mềm

 Lớp con thừa hưởng các đặc điểm

(properties = attribute + operations) từ lớp

cha trong phạm vi truy xuất được phép

 Quá trình phân tích tìm các lớp con dẫn

xuất từ lớp cha được gọi là chuyên biệt hoá

Ngày đăng: 30/11/2014, 22:25

HÌNH ẢNH LIÊN QUAN

Bảng phạm vi truy cập ở mức thành viên - Tài liệu lập trình hướng đối tượng Java căn bảnOOP
Bảng ph ạm vi truy cập ở mức thành viên (Trang 78)
Sơ đồ minh hoạ: - Tài liệu lập trình hướng đối tượng Java căn bảnOOP
Sơ đồ minh hoạ: (Trang 97)
Bảng phạm vi truy cập ở mức thành viên - Tài liệu lập trình hướng đối tượng Java căn bảnOOP
Bảng ph ạm vi truy cập ở mức thành viên (Trang 98)

TỪ KHÓA LIÊN QUAN