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

Bài giảng lập trình mạng bằng ngôn ngữ java chương 4 dương khai phong

43 321 1

Đ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 43
Dung lượng 2,93 MB

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

Nội dung

B www.sites.google.com/site/khaiphong ĐH Công nghệ Thông tin Các khái niệm liên quan OOP: Ví dụ: lớp SINHVIEN là một thiết kế chung cho nhiều đối tượng sinh viên được tạo ra... B www

Trang 1

www.sites.google.com/site/khaiphong

ĐH Công nghệ Thông tin

Giáo viên: Dương Khai Phong Email: khaiphong@gmail.com

Lý thuyết: 45 tiết

Thực hành: 30 tiết

Trang 3

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

Các khái niệm liên quan OOP

Các đặc điểm trong OOP

Các lớp cơ bản trong java

Trang 4

 Java là ngôn ngữ lập trình thuần hướng đối tượng

 Mọi thứ trong một hệ thống được viết bằng ngôn ngữ java phải được triển khai là đối tượng

Ví dụ: trong một chương trình quản lý giáo vụ nhà

trường sẽ bao gồm các đối tượng:

 sinh viên (student)

 giáo viên (teacher)

 môn học (course)

 thời khóa biểu (schedule)

 lớp học (classroom)

Trang 5

B

www.sites.google.com/site/khaiphong

ĐH Công nghệ Thông tin

Các khái niệm liên quan OOP:

Đối tượng (object)

Từ khoá static, final, abstract, native

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

Trang 6

Đối tượng: (object)

 Đối tượng đại diện cho một thực thể trong thế giới thật

Ví dụ: 1 ô tô, 1 con người, 1 hình tròn, 1 khoản tiền

 Mỗi đối tượng có một identity, state, và các behavior duy

nhất (state xác định đối tượng, behavior xác định đối tượng làm cái gì):

State = tập các data field (properties)

Behavior = tập các method (functions)

Ví dụ: 1 hình tròn có: Identity (Circle), State (bán kính

R), Behavior (Tính diện tích: ComputeArea)

Trang 7

B

www.sites.google.com/site/khaiphong

ĐH Công nghệ Thông tin

Các khái niệm liên quan OOP:

Ví dụ: lớp SINHVIEN là một thiết kế chung cho nhiều đối

tượng sinh viên được tạo ra

Trang 8

Khai báo lớp: (class)

Trang 9

B

www.sites.google.com/site/khaiphong

ĐH Công nghệ Thông tin

Các khái niệm liên quan OOP:

Khai báo và tạo đối tượng của lớp trong 1 dòng lệnh:

ClassName objectRef = new ClassName();

Ví dụ: Circle myCircle = new Circle();

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

Trang 10

Truy nhập đối tượng:

Trang 11

B

www.sites.google.com/site/khaiphong

ĐH Công nghệ Thông tin

Các khái niệm liên quan OOP:

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

 Mặc định: các lớp, biến hoặc dữ liệu có thể được

truy nhập bởi bất kỳ lớp nào trong cùng gói

(package)

public: lớp, dữ liệu hay phương thức có thể được

truy nhập bởi tất cả các lớp trong bất kỳ gói nào

private: dữ liệu hoặc phương thức chỉ có thể được

truy nhập bởi lớp khai báo

protected: chỉ các lớp con của lớp đó và các lớp trong cùng một gói mới được phép tạo các thể hiện của lớp đó

Trang 12

Hàm khởi tạo: (Constructor)

Trang 13

B

www.sites.google.com/site/khaiphong

ĐH Công nghệ Thông tin

Các khái niệm liên quan OOP:

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

Đặc điểm của Constructor:

Một constructor không có tham số được gọi

 Các Constructor được gọi khi sử dụng toán

tử new để tạo một đối tượng Nó đóng vai trò khởi tạo đối tượng

Trang 14

Từ khoá this:

 thay thế cho đối tượng hiện tại

 gọi các constructor khác của đối tượng

Trang 15

Ví dụ: xây dựng lớp Rectangle như lược đồ UML sau:

Rectangle

- width: double

- height: double

- color: String + Rectangle() + Rectangle(width: double, height:

double, color: String) + getWidth(): double

+ setWidth(width: double): void + getHeight(): double

+ setHeight(height: double): void + getColor(): String

+ setColor(width: String): void + findArea(): double

+ findPerimeter(): double

chiều rộng hình chữ nhật chiều dài hình chữ nhật màu hình chữ nhật Tạo một HCN với c.dài = 1, c.rộng = 1 Tạo một HCN với c.dài và c.rộng

xác định trong tham số Trả về chiều rộng HCN

Thiết lập chiều rộng mới cho HCN Trả về chiều dài HCN

Thiết lập chiều dài mới cho HCN Trả về màu của HCN

Thiết lập màu mới cho HCN Trả về diện tích HCN

Trang 16

Mảng các đối tượng:

 Một mảng các đối tượng thực chất là mảng các biến tham chiếu

 Khai báo và tạo mảng các đối tượng:

 Khởi tạo cho từng đối tượng trong mảng:

Circle[] circleArray = new Circle[10];

for (int i=0; i<circleArray.length; i++){

circleArray[i] = new Circle();

}

Trang 17

B

www.sites.google.com/site/khaiphong

ĐH Công nghệ Thông tin

Các khái niệm liên quan OOP:

Từ khoá static, final, abstract, native:

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

static: cho biết dữ liệu và phương thức là chung cho lớp chứ

không phải của thể hiện (instance)

final: cho biết một lớp, dữ liệu hay phương thức là cuối, không được phép overridden bởi một thành phần con nào khác

abstract: cho biết một lớp hay phương thức là trừu tượng không cài đặt gì cả

native: cho biết một phương thức được lập trình bởi một ngôn

ngữ lập trình khác (Ví dụ: native myMethod();  phương thức myMethod có thể được tạo bởi một ngôn ngữ lập trình khác java)

Trang 18

Biến dữ liệu của thể hiện instance

Biến dữ liệu của lớp

Trang 19

Ví dụ 2: từ khoá static giữa dữ liệu và phương thức

Error: phương thức static không được phép truy cập thành dữ liệu không thuộc static

Trang 20

Đối với phương thức non-static cần phải có đối tượng gọi trước nó

Đối với phương thức

static KHÔNG CẦN

phải có đối tượng gọi trước nó

Trang 21

Ví dụ 4: từ khoá final cho thuộc tính dữ liệu

Error: đối với thành phần dữ liệu có từ khoá final thì thành phần

dữ liệu đó được xem như hằng số (không gán lại giá trị mới)

Ví dụ 5: từ khoá abstract cho phương thức

Error: từ khoá abstract cho biết phương thức hello là trừu tượng thì không được phép định nghĩa Chỉ có lớp dẫn xuất mới định nghĩa

Trang 22

Hỗ trợ những nguyên tắc cơ bản của lập trình hướng đối tượng

Tính đóng gói (encapsulation): là cơ chế che dấu đi một phần các chi tiết cài đặt, cũng như phần dữ liệu cục bộ của nó, và chỉ công bố ra ngoài những gì cần công bố để trao đổi với các đối tượng khác

Tính kế thừa (inheritance): là sự tái sử dụng các lớp có các đặc tính chung với nhau để tạo ra các lớp mới

Tính đa hình (polymorphism): là cơ chế cho phép cài đặt các lớp dẫn xuất khác nhau từ một lớp nguồn Một phương thức của đối tượng có thể có nhiều kiểu thể hiện khác nhau

Trang 23

Ví dụ 1: khai báo và sử dụng package để thể hiện tính đóng gói

Cách khai báo một lớp thuộc về một gói package nào đó trong java

Tập tin triangle.java Tập tin rectangle.java

Tập tin testpackage.java

Sử dụng gói đã tạo

Trang 24

Xây dựng lớp dẫn xuất (Ví dụ: lớp student) Extends : từ khoá khai báo

kế thừa

Super : từ khoá gọi

phương thức của lớp cha

Trang 25

C

www.sites.google.com/site/khaiphong

ĐH Công nghệ Thông tin

Các đặc điểm trong OOP:

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

Nhận xét tính kế thừa (inheritance):

 Thừa kế là một quan hệ IS-A (còn thể hiện của một lớp là một quan hệ HAS-A)

Ví dụ: có lớp cơ sở là Animals  các lớp dẫn xuất như: lớp

Dog, lớp Cat (Dog, Cat IS A animals), còn các thể hiện của

Dog, Cat sẽ có thể các tính chất của animals (HAS-A)

 Một lớp có từ khoá final trước từ khoá class sẽ không được phép

kế thừa

 Một lớp là final thì không là lớp trừu tượng

abstract final class myclass{…} // Error

 Trong java không có khái niệm lớp tĩnh: static class myclass()

Trang 26

Xây dựng lớp dẫn xuất (Ví dụ: lớp rectangle )

mà chỉ được tham chiếu đến đối tượng

abstract : phương thức trừu tượng Lớp dẫn xuất bắt

buộc phải định nghĩa lại phương thức này

Định nghĩa lại phương thức đã

Trang 27

Ví dụ 3: Tính đa hình trong java

Xây dựng lớp dẫn xuất (Ví dụ: lớp circle )

Sử dụng các lớp đã xây dựng ( main )

Tuỳ theo đối tượng được tham chiếu mà phương thức tính diện tich của đối tượng tương ứng được sử dụng

Trang 28

java.lang

Chứa các lớp Java lõi (core Java class), gồm lớp số (numeric class), chuỗi ký tự, đối tượng (Object) Gói này được import hoàn toàn vào tất cả các chương trình Java

java.awt: chứa các lớp đồ họa

java.applet: chứa các lớp hỗ trợ applet

java.io: chứa các lớp cho các luồng vào-ra và các file

java.util: chứa nhiều tiện ích, ví dụ date

java.net: chứa các lớp hỗ trợ giao tiếp mạng

 Các lớp khác như: java.sql, java.rmi

Trang 29

D

www.sites.google.com/site/khaiphong

ĐH Công nghệ Thông tin

Các lớp cơ bản trong java:

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

 Lớp String – xử lý chuỗi cố định

 Lớp StringBuffer – xử lý chuỗi linh động (nối

chuỗi, cắt chuỗi,…)

 Lớp StringTokenizer –xử lý chuỗi con

 Lớp Character – xử lý ký tự trong chuỗi

Trang 30

Các lớp liên quan đến chuỗi: String

 Xây dựng chuỗi:

• String message = "Welcome to Java!"

• String message = new String("Welcome to Java!“);

• String s = new String();

 Lấy độ dài chuỗi và lấy các ký tự cụ thể trong chuỗi

 Ghép chuỗi (concat)

 Chuỗi con (substring(index), substring(start, end))

 So sánh (equals, compareTo)

 String Conversions

 Tìm 1 ký tự hoặc chuỗi con trong 1 chuỗi

 Chuyển đổi giữa Strings và Arrays

 Chuyển đổi các ký tự và các g/t số thành chuỗi

Trang 31

Các phương thức trong

lớp String:

String

+String() +String(value: String) +String(value: char[]) +charAt(index: int): char +compareTo(anotherString: String): int +compareToIgnoreCase(anotherString: String): int +concat(anotherString: String): String

+endsWithSuffixe(suffix: String): boolean +equals(anotherString: String): boolean +equalsIgnoreCase(anotherString: String): boolean +indexOf(ch: int): int

+indexOf(ch: int, fromIndex: int): int +indexOf(str: String): int

+indexOf(str: String, fromIndex: int): int +intern(): String

+regionMatches(toffset: int, other: String, offset: int, len: int): boolean +length(): int

+replace(oldChar: char, newChar: char): String +startsWith(prefix: String): boolean

+subString(beginIndex: int): String +subString(beginIndex: int, endIndex: int): String +toCharArray(): char[]

+toLowerCase(): String +toString(): String +toUpperCase(): String +trim(): String

+copyValueOf(data: char[]): String +valueOf(c: char): String

+valueOf(data: char[]): String +valueOf(d: double): String +valueOf(f: float): String +valueOf(i: int): String +valueOf(l: long): String

Lưu ý:

 Có thể tạo chuỗi từ một mảng các ký tự:

char [] charArr = {'G','o','o','d',' ','d','a','y'}

 Lấy chiều dài của chuỗi:

int len=message.length() // KQ: len=7

 Lấy ký tự trong chuỗi:

Trang 32

+compareToIgnoreCase(anotherString: String): int +concat(anotherString: String): String

+endsWithSuffixe(suffix: String): boolean +equals(anotherString: String): boolean +equalsIgnoreCase(anotherString: String): boolean +indexOf(ch: int): int

+indexOf(ch: int, fromIndex: int): int +indexOf(str: String): int

+indexOf(str: String, fromIndex: int): int +intern(): String

+regionMatches(toffset: int, other: String, offset: int, len: int): boolean +length(): int

+replace(oldChar: char, newChar: char): String +startsWith(prefix: String): boolean

+subString(beginIndex: int): String +subString(beginIndex: int, endIndex: int): String +toCharArray(): char[]

+toLowerCase(): String +toString(): String +toUpperCase(): String +trim(): String

+copyValueOf(data: char[]): String +valueOf(c: char): String

+valueOf(data: char[]): String +valueOf(d: double): String +valueOf(f: float): String

 Chuỗi con: substring

String s1 = “Hi java”;

s1=s1.substring(3);

S1=s1.substring(0,2);

// KQ: false // KQ: false // KQ: true

// KQ: s1=“Hi java”

// KQ: s1=“java”

// KQ: s1=“hi”

Trang 33

D

www.sites.google.com/site/khaiphong

ĐH Công nghệ Thông tin

Các lớp cơ bản trong java:

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

Các lớp liên quan đến chuỗi: StringBuffer

 Xây dựng chuỗi:

• StringBuffer message = "Welcome to Java! " // ERROR

• StringBuffer message = new StringBuffer ("Welcome ");

Nối chuỗi (append)

Chèn chuỗi (insert)

Xóa chuỗi (delete)

Đảo ngược chuỗi (reverse)

Chèn ký tự (setCharAt)

Trang 34

+append(v: aPrimitiveType): StringBuffer

+append(str: String): StringBuffer +capacity(): int

+charAt(index: int): char +delete(startIndex: int, endIndex: int): StringBuffer +deleteCharAt(int index): StringBuffer

+insert(index: int, data: char[], offset: int, len: int): StringBuffer +insert(offset: int, data: char[]): StringBuffer

+insert(offset: int, b: aPrimitiveType): StringBuffer

+insert(offset: int, str: String): StringBuffer +length(): int

+replace(int startIndex, int endIndex, String str): StringBuffer +reverse(): StringBuffer

+setCharAt(index: int, ch: char): void +setLength(newLength: int): void +substring(start: int): StringBuffer

Trang 35

Ví dụ StringBuffer:

// KQ: strBuf=“Welcome HTML and Java” // KQ: strBuf=“Welcome HTML Java” // KQ: strBuf=“Welcome HTML Java”

// KQ: strBuf=“Welcome html Java”

// KQ: strBuf=“welcome html Java”

// KQ: strBuf=“avaaj lmth emoclew”

Trang 36

Các lớp liên quan đến chuỗi: StringTokenizer

Chuỗi có thể được bẻ thành các mảnh (gọi là token) bởi các dấu phân cách (gọi là delimiter)

 Xây dựng chuỗi:

Trang 39

Câu 1: Đoạn lệnh nào sau đây được đặt trong lớp student để

khai báo lớp student thuộc package uit.edu.vn

import uit.*;

import uit.edu.vn.*;

package uit.edu.vn.student;

package uit.edu.vn;

Trang 40

Một phương thức final thì không thể override

Một biến final chỉ có thể khai báo trong một lớp final

Một biến final tương tự như một biến static

Trang 41

Câu 3: Khai báo nào sau đây không gây ra lỗi biên dịch

abstract final class Person{}

default class Person{}

abstract int i;

native myMethod();

Trang 42

A

B

C

D

Đoạn khai báo này sẽ:

Gay ra lỗi biên dịch

Tạo đối tượng của lớp Rectangle

Tạo đối tượng mới nếu lớp Rectangle có constructor

mặc định read

Tạo một biến b với giá trị ban đầu là null

Trang 43

Câu 5: Phát biểu nào sau đây là đúng

Thừa kế là một quan hệ has-a

Một thể hiện của một lớp là một quan hệ has-a

Một phương thức là một quan hệ is-a

Một thể hiện của một lớp là một quan hệ is-a

Ngày đăng: 04/12/2015, 13:42

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w