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

Lap Trinh java bai giang chuong 3

63 345 0

Đ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 63
Dung lượng 665,83 KB

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

Nội dung

Lập trình cơ bản với Java Tác giả: PGS.TS Trần Văn Lăng, Ths. Chu Nguyên Hoàng Minh Giúp các bạn tiếp cần gần hơn với bộ môn lập trình để trở thành một Lập trình viên suất sắc Lập trình cơ bản với Java Tác giả: PGS.TS Trần Văn Lăng, Ths. Chu Nguyên Hoàng Minh Giúp các bạn tiếp cần gần hơn với bộ môn lập trình để trở thành một Lập trình viên suất sắc

Trang 1

Sau khi học xong bài này sinh viên sẽ nắm được:

 Lập trình hướng đối tượng với java

Bảng phân chia thời lượng:

Trọng tâm bài giảng:

 Lập trình hướng đối tượng với java

 Lớp và đối tượng

 Kế thừa

 Package

Trang 2

c p các module M i một module có một đ u vào riêng và một đ u ra riêng Trong m i module, sự đi u khi n có chi hướng đi x ống theo c u trúc

Phương pháp OOP trừ tượng các lớp từ các đối tượng trong thế giới thực chương trình của bạn sẽ được xây dựng từ các lớp Phương pháp OOP cố gắng quản lý việc thừa

kế phức tạp trong những v n đ thực tế Đ làm được việc nà phương pháp OOP che

gi u một vài thông tin bên trong các đối tượng OOP tập tr ng trước hết trên dữ liệu R i gắn kết các phương thức thao tác trên dữ liệu

Lập trình hướng đối tượng (OOP) là một phương pháp phát tri n ph n m m Những ngôn ngữ OOP không chỉ bao g m cú pháp và một trình biên dịch (compiler) mà còn có một môi trường phát tri n toàn diện ôi trường này bao g m một thư viện được thiết kế tốt, thuận lợi cho việc sử dụng các đối tượng

Hãy xem xét một tình huống c n được tri n khai thành một hệ thống trên máy tính:

m a bán xe hơi V n đ vi tính hóa việc m a bán xe hơi bao g m những gì?

Trang 3

Những hoạt động liên quan đến việc mua bán:

Nhân viên bán hàng đưa khách hàng tham an phòng trưng bà

Khách hàng chọn lựa một xe hơi

hách hàng đặt h a đơn

Khách hàng trả ti n

Chiếc xe được trao cho khách hàng

M i v n đ được chia ra thành nhi u yếu tố được gọi là các Đối tượng (Objects) Chẳng hạn như ở ví dụ trên khách hàng xe hơi và nhân viên bán hàng là những đối tượng

Lập trình viên luôn luôn cố gắng tạo ra những kịch bản (scenarios) thật quen thuộc với những tình huống thực tiễn Đ chính là vai trò của kỹ thuật hướng đối tượng Chúng

ta sử dụng kỹ thuật hướng đối tượng đ ánh xạ những thực th chúng ta gặp phải trong đời sống thực thành những đối tượng và mối quan hệ giữa chúng

Phương pháp lập trình hướng đối tượng có các khả năng a :

- Mô phỏng thế giới thực một cách tự nhiên bởi các đối tượng và mối quan hệ giữa chúng, thuận tiện cho việc thiết kế hệ thống phức tạp Phương pháp nà tiến hành tiến trình phân tích, thiết kế và phát tri n một v n đ trong khuôn khổ những khái niệm và thuật ngữ thuộc lĩnh vực ứng dụng Vì thế, có một sự tương hợp cao nh t giữa việc phát tri n ứng dụng và v n đ thực tế

- Thừa kế và tái sử dụng mã có sẵn một cách dễ dàng, giúp tiết kiệm công sức, chi phí và nâng cao năng t của người lập trình, dễ bảo trì, dễ nâng c p, mở rộng, giảm thi u các l i và những v n đ liên an đến việc bảo trì ứng dụng do khả năng tái ử dụng các đối tượng

Trang 4

96

Lập trình hướng đối tượng đ cập đến dữ liệu và thủ tục xử lý dữ liệu theo quan

đi m là một đối tượng duy nh t Lập trình hướng đối tượng xem xét dữ liệ như là một đối tượng hay là một đơn vị độc lập, với bản ch t riêng và những đặc tính của thực th y Bây giờ chúng ta hãy khảo sát những thuật ngữ đối tượng (Object), thuộc tính (Attribute)

và phương thức (method)

3.1.2 Trừu tượng hóa (Abstraction)

Con người đơn giản hoá độ phức tạp của thế giới thực thông qua sự phân c p trừu tượng Nhìn bên ngoài, máy tính có hộp đi u khi n, màn hình, bàn phím, chuột , các bộ phận này lại bao g m các bộ phận nhỏ hơn như hộp đi u khi n có bảng mạch chính chứa CPU, các mạch giao tiếp gắn trên n đĩa cứng Nhờ trừ tượng hoá người dùng chỉ quan tâm mối quan hệ, giao tiếp giữa các bộ phận, mà không quan tâm c u trúc chi tiết từng bảng mạch trong máy tính

Vậy trừ tượng là á trình xác định các khía cạnh c n thiết của đối tượng, của hệ thống và bỏ qua các khía cạnh không quan trọng Đi đ c nghĩa là chúng ta phải tập

tr ng xác định đối tượng " à gì ?" và n " àm gì ?" nghĩa là đối tượng bao g m các thuộc tính gì phương thức gì ? trước khi quyết định cách n được thực thi Sự phân c p trừ tượng một hệ thống phức tạp cho phép bạn phân lớp các thành ph n c ý nghĩa của

cả hệ thống phức tạp, chia nhỏ chúng thành những thành ph n đơn giản có th quản lý được Ph n dữ liệu từ một chương trình hướng xử lý kinh đi n được trừ tượng hoá thành các đối tượng thành ph n Dãy các xử lý trở thành các thông điệp giữa các đối tượng Bạn

c th xem các đối tượng nà như những thực th độc lập tiếp nhận các ê c từ bên ngoài Đâ là ph n cốt l i của lập trình hướng đối tượng

Hãy khảo át chương trình ứng dụng cho việc m a bán xe hơi n i trên Chương trình phải xu t h a đơn cho những xe hơi đã bán cho khách hàng Đ xu t một h a đơn chúng ta c n những thông tin chi tiết v khách hàng Vậ bước thứ nh t là xác định những đặc tính của khách hàng

Một vài đặc tính gắn kết với khách hàng là:

Họ và Tên

Địa chỉ

Trang 5

97

Ngày sinh

Số điện thoại

Email Chi u cao

à t c…

Từ danh sách k trên chúng ta xác định những đặc tính thiết yế đối với ứng dụng Bởi vì chúng ta đang đ cập đến những khách hàng mua xe, vì thế những chi tiết thiết yếu là:

Công việc xu t h a đơn đòi hỏi những hành động sau:

Nhập họ tên của khách hàng

Nhập địa chỉ khách hàng

Nhập ki u xe

Nhập tên nhân viên bán xe

Xu t h a đơn với định dạng yêu c u

h ng thông tin bên ưới cho th y những thuộc tính và những hành động liên

an đến một h a đơn:

Các thuộc tính Tên của khách hàng Địa chỉ của khách hàng Kiểu xe bán

Tên nhân viên bán xe Giá tiền

Các hành động

Trang 6

98

Nhập tên khách hàng Nhập địa chỉ khách hàng Nhập kiểu xe

Nhập tên nhân viên bán xe Nhập giá tiền

Xuất hóa đơn

Vậy sự trừ tượng hóa dữ liệ là á trình xác định và nhóm các thuộc tính và các hành động liên an đến một thực th cụ th , xét trong mối tương an với ứng dụng đang phát tri n

Những ư đi m của việc Trừ tượng hóa là:

Tập trung vào v n đ

Xác định những đặc tính thiết yếu và những hành động c n thiết

Giảm thi u những chi tiết không c n thiết

Việc trừ tượng hóa dữ liệu là c n thiết, bởi vì không th mô phỏng t t cả các hành động và các thuộc tính của một thực th V n đ m u chốt là tập tr ng đến những hành vi cốt yếu và áp dụng chúng trong ứng dụng

3.1.3 Triển khai mô hình hướng đối tượng

t cả các ngôn ngữ lập trình hướng đối tượng đ c các cơ chế cho ph p bạn tri n khai các mô hình hướng đối tượng Đ là tính đ ng g i kế thừa và tính đa hình

3.1.3.1 Tính đóng gói (Encapsulation)

Đâ là cơ chế dùng một vỏ bọc kết hợp ph n dữ liệu và các thao tác trên dữ liệ đ (ph n mã lệnh) thành một th thống nh t, tạo nên sự an toàn, tránh việc sử dụng không đúng thiết kế, bảo vệ cho mã lệnh và dữ liệu chống việc truy xu t từ những đoạn mã lệnh bên ngoài

Lớp (Class)

rong Java tính đ ng g i th hiện qua khái niệm lớp (Class) Lớp là hạt nhân của Java, tạo n n tảng cho lập trình hướng đối tượng trong Java Lớp định nghĩa hai ph n chính là dữ liệu (các thuộc tính) và hành vi (các phương thức), gọi là các thành viên của lớp ùng ch ng cho các đối tượng cùng loại Từ sự phân tích hệ thống người ta trừu

Trang 7

99

tượng nên các lớp Sa đ các đối tượng được tạo ra theo khuôn m u của lớp M i đối tượng thuộc một lớp có dữ liệ và hành vi định nghĩa cho lớp đ giống như là inh ra từ một kh ôn đúc của lớp đ Vì vậy mà lớp là khuôn m u của đối tượng đối tượng là th hiện của một lớp Lớp là c trúc logic còn đối tượng là c u trúc vật lý Phương thức định nghĩa cho việc sử dụng dữ liệ như thế nào Đi nà c nghĩa là hoạt động của lớp được định nghĩa thông a phương thức

Giả sử bạn phải tạo ra giao diện với người dùng và c n có những nút nh n (Button) Vậ thì trước hết bạn xây dựng lớp Button với các thuộc tính như nhãn ghi trên nút, chi u rộng, chi u cao, màu của nút đ ng thời định hành vi của nút nh n nghĩa là nút nh n c n phản ứng như thế nào khi được chọn, phát yêu c gì c đổi màu hay nh p nháy chi không Với lớp B tton như vậy, bạn có th tạo ra nhanh chóng những nút nh n

cụ th cho các mục đích khác nha

Xét hệ thống bán xe hơi các hành động và các thuộc tính sau là chung cho mọi hóa đơn cho khách hàng m a xe Ví th , chúng có th được nhóm lại thành một lớp

Lớp Hóa đơn Các thuộc tính Tên của khách hàng Địa chỉ của khách hàng Kiểu xe bán

Tên nhân viên bán xe Giá tiền

Các hành động Nhập tên khách hàng Nhập địa chỉ khách hàng Nhập kiểu xe

Nhập tên nhân viên bán xe Nhập giá tiền

Xuất hóa đơn

Những thuộc tính và những hành động chung của các đối tượng h a đơn được nhóm lại đ tạo nên một đơn vị duy nh t gọi là một lớp H a đơn

Gói (Package)

Trang 8

100

Gói là kỹ thuật của Java ùng đ phân hoạch không gian tên lớp, giao diện thành những vùng dễ quản lý hơn th hiện tính đ ng g i của Java

Đối tượng (Object)

Một lớp là một nguyên m u phác họa những thuộc tính và những hành động có th của một thực th Đ có th sử dụng thực th mà lớp định nghĩa chúng ta phải tạo một đối tượng từ lớp đ

Lớp là một khái niệm, khuôn m còn đối tượng là một th hiện, một trường hợp

K từ lúc một đối tượng hiện hữu, những thuộc tính của nó là những giá trị xác định, và những hành động được định nghĩa cho đối tượng nà được thực thi

M i đối tượng có những đặc tính riêng mô tả đối tượng y là gì, hoặc hành động ra sao

Đ có th lư giữ những chi tiết của một h a đơn một th hiện (đối tượng) của lớp

‘H a đơn’ phải được tạo ra

Phương thức (Method)

Phương thức là sự xác định v cách thức thực thi một hoạt động được yêu c u Các phương thức xác định cách thức thao tác trên các dữ liệu của một đối tượng Bởi vì phương thức là sự thực thi thực tế một hoạt động, cho nên nó có th được áp dụng

Trang 9

101

cho một đối tượng Một phương thức là một thuật toán xác định đi gì được thực hiện khi hoạt động được yêu c u

Thông điệp (Message)

Đ yêu c u một hoạt động cụ th nào đ được thực hiện, một thông điệp được gởi tới đối tượng nơi hoạt động nà được định nghĩa

Một thông điệp là một lời yêu c u một hoạt động

Khi một đối tượng nhận được một thông điệp, nó thực hiện một phương thức tương ứng

Ví dụ: Một quả bóng sẽ bị xì hơi khi xảy ra sự kiện làm thủng quả bóng

Hay sự kiện người sử dụng nh n một nút trên bàn phím Sự phản h i đối với sự kiện này là việc hi n thị ký tự tương ứng trên màn hình

3.1.3.2 Tính kế thừa (Inheritance)

C các đối tượng tương tự nha với một ố th ộc tính và phương thức và cả mối

an hệ Nế mức độ tượng tự nha lớn thật là hữ ích khi ùng ch ng những đặc tính

nà hừa kế cho ph p định nghĩa một lớp như là một lớp ch ng gọi là lớp cha (S per Cla ) các lớp thừa kế đặc tính ch ng từ lớp cha gọi là lớp con (S b Cla ) Q á trình hình thành lớp cha gọi là khái át hoá (Generalization) và lớp con là ch ên biệt hoá (Specialization) ớp con thừa kế t t cả các th ộc tính phương thức toàn cục (p blic) ha bảo vệ (protecte ) và mối an hệ ở lớp cha và bổ ng các th ộc tính phương thức mối an hệ của riêng mình nhiên một lớp con c th định nghĩa lại các phương thức thừa kế

Vậy tính kế thừa là khả năng xâ ựng các lớp mới từ các lớp đã c hi lớp đ ng gói một số dữ liệ và phương thức, lớp mới sẽ kế thừa c u trúc dữ liệ và các phương

Trang 10

102

thức của lớp mà nó kế thừa Ngoài ra nó có th bổ sung các dữ liệ và các phương thức của riêng mình

Nhờ tính kế thừa mà hệ thống hướng đối tượng có th thực hiện tái sử dụng mã

Nó r t quan trọng vì nó ứng dụng cho khái niệm cây phân c p (mô hình Top-Down) Không sử dụng cây phân lớp, m i lớp phải định nghĩa t t cả các dữ liệ và phương thức của mình một cách rõ ràng Nếu sử dụng sự kế thừa, m i lớp chỉ c n định nghĩa thêm những đặc trưng của mình

Ví dụ: Lớp QuanLy và NVBanHang là lớp cụ th , có các thuộc tính, thao tác giống nha như lớp NhanVien, ví dụ các thuộc tính maNV ho en iaChi nga Sinh… c các thao tác như them() xoa() a() hien hi()… nhưng m i lớp có thêm những thuộc tính, thao tác và cả mối quan hệ bổ sung

ụ: Xe có th xem như một lớp và các xe Pergo t BW Dream là các đối

tượng của lớp xe Các xe đ u có th lái đi ừng lại Từ lớp xe ở trên, ta có th xây dựng các lớp xe đạp xe má xe ôtô Xe ôtô c thêm động cơ và c th tự khởi động…

Trang 11

103

Có các hình thức kế thừa:

- Kế thừa đơn (Single Inheritance): là lớp con không th thừa kế nhi hơn một lớp cha

Ví dụ: Quan hệ tổng quát hóa giữa lớp NhanVien, QuanLy và NVBanHang

- Kế thừa bội (Multiple Inheritance): là lớp con có th thừa kế nhi hơn một lớp cha Ví dụ lớp con QLBANHANG thừa kế các đặc tính từ cả hai lớp cha QUANLY và NVBANHANG Cơ chế thừa kế bội là v n đ khó khi phải cung c p một phương pháp xử

lý đối lập phát sinh khi các lớp cha chứa thuộc tính ha phương thức giống nhau Không phải t t cả các ngôn ngữ hướng đối tượng và cơ ở dữ liệ nào cũng h trợ thừa kế bội Java là ngôn ngữ không h trợ tính đa thừa kế

3.1.3.3 Tính đa hình (Polymorphism)

Trong lập trình hướng c u trúc, một phương thức chỉ áp dụng cho một đối tượng Chẳng hạn xét toán tử Cộng Toán tử này chỉ tính tổng của hai số nguyên Khi truy n hai giá trị 2 và 3 thì nó hi n thị 5 Chúng ta không th sử dụng toán tử Cộng đ tính tổng của hai chu i ‘Hello!’ và ‘How are o ?’ đ c được chu i kết quả ‘Hello! How are o ?’

Trong hệ thống hướng đối tượng thì tình huống mô tả trên là có th

ính đa hình cho ph p một phương thức có các cách th hiện khác nhau trên nhi u loại đối tượng khác nhau Với tính đa hình nếu cùng một phương thức ứng dụng cho các đối tượng thuộc các lớp khác nha thì n đưa đến những kết quả khác nha ính đa hình

là một trong những đặc tính quan trọng nh t của hệ thống hướng đối tượng

Một ví dụ khác là phương thức Vẽ được chia sẻ giữa các lớp con của lớp Hình Vẽ nhiên phương thức Vẽ được ứng dụng cho hình hộp sẽ khác với hình elip Xét trên mức độ người sử dụng, họ chỉ c n một phương thức Vẽ của lớp Hình Vẽ Còn cách thức

mà phương thức Vẽ được thực thi cho các trường hợp khác nhau thì họ không c n biết

Với ngôn ngữ lập trình Java tính đa hình th hiện:

 Khi một lớp được kế thừa từ các lớp tổ tiên thì n c th tha đổi cách thức làm việc của lớp tổ tiên trong một số phương thức nào đ (nhưng tên

ki u trả v anh ách tham đối của phương thức thì v n giữ ng ên) Đi u này

gọi là viết chồng hàm (overriding method) Như vậy với một tên phương thức,

Trang 12

khác là vào tham đối truy n cho phương thức Đi u này gọi là nạp chồng hàm (overloading method)

ính đa hình còn th hiện ở việc một giao diện (giao tiếp - interface) có th sử dụng cho các hoạt động của một lớp tổng quát, hay còn gọi là

“một giao diện, nhi phương thức” C nghĩa là c th thiết kế một giao diện tổng quát cho một nh m các hành vi liên an Đi u này giảm thi u sự phức tạp bằng cách cho phép một giao diện có th sử dụng cho các hoạt động của một lớp tổng quát Trình biên dịch sẽ xác định hoạt động cụ th nào sẽ được thi hành tuỳ theo đi u kiện Bạn chỉ c n nhớ các giao diện của lớp tổng quát và sử dụng nó

Vậ tính đa hình cho ph p các đối tượng khác nha đáp ứng cùng một thông điệp theo các cách khác nhau

Sự kết hợp đúng đắn giữa đa hình đ ng g i và kế thừa tạo nên môi trường lập trình có khả năng phát tri n tốt hơn r t nhi u so với môi trường không h trợ hướng đối tượng Một cây phân c p lớp thiết kế tốt là đi căn bản cho việc sử dụng lại những đoạn

mã lệnh mà bạn đã tốn công sức nhi u cho việc phát tri n và ki m tra ính đ ng g i cho phép bạn sử dụng các đối tượng và ra lệnh thi hành tới chúng mà không phá vỡ c u trúc các đoạn mã lệnh đã bảo vệ bởi giao diện của các lớp Sự đa hình cho ph p bạn tạo ra những đoạn mã lệnh gọn gàng, dễ đọc, dễ hi u và có tính ổn định

Java là ngôn ngữ lập trình hướng đối tượng nên c đ đủ các tính năng trên thư viện lớp Java được cung c p khá đ đủ cho người lập trình đ bắt đ u một dự án mới

Trang 13

Các đối tượng được xây dựng bởi các lớp nên được gọi là các th hiện của lớp (class instance)

b K a bá / đị ĩa lớp

[public] ớp được tr x t ch ng cho

các g i khác mặc định chỉ c các đoạn mã trong cùng một g i mới tr x t n

[abstract] ớp trừ tượng không th khởi

tạo

class ClassName ên lớp

[extends SuperClass] ế thừa một lớp cha S perCla

[implements Interfaces] Cài đặt các giao iện Interface { //Member Variables

Declarations

hai báo các biến thành viên

//Methods Declarations hai báo các phương thức (hàm)

ụ: Tạo một lớp các đối tượng nhân viên như a :

class NhanVien {

private String hoTen;

private int namSinh;

private float heSoLuong;

static int luongCB;

}

3.2.2 Đối tượng (Object)

Đ c được các đối tượng của một lớp phải a hai giai đoạn :

Trang 14

Sa đ đ thực sự tạo ra một đối tượng và gán địa chỉ của đối tượng cho biến này, dùng toán tử new

ObjectName = new ClassName();

Ví dụ: nv = new NhanVien();

Có th kết hợp cả hai bước trên vào một câu lệnh :

ClassName ObjectName = newClassName();

ụ NhanVien nv = new NhanVien();

3.2.3 Thuộc tính của lớp

Vùng dữ liệu (fields) hay thuộc tính (properties) của lớp

được khai báo bên trong lớp như a :

class <ClassName>

{

// khai báo những thuộc tính của lớp

<ti n tố> <ki u dữ liệu> field1;

// … }

Đ xác định quy n truy xu t của các đối tượng khác đối với vùng dữ liệu của lớp người ta thường dùng 3 ti n tố sau:

public: có th truy xu t từ t t cả các đối tượng khác

private: một lớp không th truy xu t vùng private của 1 lớp khác

protected: vùng protected của 1 lớp chỉ cho phép bản thân lớp đ và những lớp

d n xu t từ lớp đ tr cập đến

Trang 15

107

Ví dụ:

public class xemay{

public String nhasx;

public String model;

private float chiphisx;

protected int thoigiansx;

// so luong so cua xe may: 3, 4 so

protected int so;

// sobanhxe là biến tĩnh c giá trị là 2 trong t t cả

// các th hiện tạo ra từ lớp xemay

public static int sobanhxe = 2;

}

Thuộc tính “nha x” “mo el”c th được truy cập đến từ t t cả các đối tượng khác Thuộc tính “chiphi x” chỉ có th truy cập được từ các đối tượng có ki “xema ” Thuộc tính “thoigian x” o c th truy cập được từ các đối tượng có ki “xema ”

và các đối tượng của các lớp con d n xu t từ lớp “xema ”

ư ý: hông thường đ an toàn cho vùng dữ liệu của các đối tượng người ta tránh dùng ti n tố p blic mà thường chọn ti n tố private đ ngăn cản quy n truy cập đến vùng

dữ liệu của một lớp từ các phương thức bên ngoài lớp đ

3.2.4 Cách truy xuất thành phần của lớp

a iến khai báo trong định ngh a lớp

- Biến đối tượng (In tance Variable ha Ob ect Variable): chỉ th ộc tính đối tượng khi tr x t phải khởi tạo đối tượng

Cách khai báo biến đối tượng:

TypeInstanceVar;

Cách tr cập biến đối tượng:

ObjectName.InstanceVar

Ví dụ: NhanVien nv = new NhanVien();

System.out.println(nv.hoTen);//không th truy cập biến hoTen, do khai báo private

Trang 16

108

- Biến lớp (Cla Variable) : v bản ch t là biến toàn cục là biến tĩnh được tạo lập một l n cùng với lớp ùng ch ng cho mọi đối tượng th ộc lớp khi tr x t không c n khởi tạo đối tượng đ trao đổi thông tin của các đối tượng cùng lớp

Cách khai báo biến lớp :

b ộc phải khởi tạo giá trị trước khi ử ụng

b Hàm khai báo trong định ngh a lớp gồm có hai loại

- Hàm đối tượng (Ob ect etho ):

Cách tr x t hàm đối tượng như biến đối tượng

private String hoTen; //Biến đối tượng

private int namSinh;

private float heSoLuong;

static int luongCB; //Biến lớp

float luong() { //Hàm đối tượng

float l = luongCB * heSoLuong;//Biến cục bộ return l;

}

Trang 17

Math.round(x) Cho ố ng ên g n nh t với ố x Số ng ên

ụ : double s = Math.pow(r,2)*Math.PI;

3.3 Hàm

3.3.1 Cách khai báo hàm và phạm vi truy xuất

Hàm ha phương thức (method) trong Java là khối lệnh thực hiện các chức năng các hành vi xử lý của lớp lên vùng dữ liệu

hai báo phương thức:

<Ti n tố> <ki u trả v ên phương thức ( anh ách đối số>)

Trang 18

protected: có th truy cập được từ lớp khai báo và những lớp d n xu t từ nó private: chỉ được truy cập bên trong bản thân lớp khai báo

static: phương thức lớp dùng chung cho t t cả các th hiện của lớp c nghĩa là

phương thức đ c th được thực hiện k cả khi không c đối tượng của lớp chứa phương thức đ

final: phương thức có ti n tố nà không được khai báo ch ng ớ các lớp d n xu t abstract: phương thức không c n cài đặt (không có ph n source code), sẽ được

hiện thực trong các lớp d n xu t từ lớp này

synchoronized: ùng đ ngăn các tác động của các đối tượng khác lên đối tượng

đang x t trong khi đang đ ng bộ hóa Dùng trong lập trình miltithreads

<ki u trả v >: có th là ki u void, ki cơ ở hay một lớp

ên phương thức : đặt theo i ước giống tên biến

<danh sách thông số>: có th r ng

ư ý:

hông thường trong một lớp các phương thức nên được khai báo dùng từ khóa public, khác với vùng dữ liệ thường là dùng ti n tố private vì mục đích an toàn Những biến nằm trong một phương thức của lớp là các biến cục bộ (local) và nên được khởia tạo sau khi khai báo

Ví dụ:

public class xemay{

public String nhasx;

public String model;

private float chiphisx;

Trang 19

111

protected int thoigiansx;

// so luong so cua xe may: 3, 4 so

protected int so;

// là biến tĩnh có giá trị là 2 trong tất cả

// các thể hiện tạo ra từ lớp xemay

public static int sobanhxe = 2;

public float tinhgiaban(){

- ừ khoá tatic cho ph p hàm main() được gọi khi không c n khởi tạo đối tượng

Vì hàm main() được trình thông ịch của Java gọi trước khi b t kỳ lớp nào được khởi tạo

- ừ khoá voi cho biết hàm main() không trả v giá trị

- ừ khoá p blic chỉ ra rằng hàm nà được gọi bởi òng lệnh bên ngoài lớp

- ham đối String arg là một mảng các ch i ký tự chứa các tham đối òng lệnh gọi thực hiện ứng

3.3.3 Hàm khởi tạo (Constructor) ([1] trang 46, [2] trang 125)

Contructor thật ra là một loại phương thức đặc biệt của lớp Constructor dùng gọi

tự động khi khởi tạo một th hiện của lớp, có th ùng đ khởi gán những giá trị mặc định Các constructor không có giá trị trả v , và có th có tham số hoặc không có tham số

Constructor phải có cùng tên với lớp và được gọi đến dùng từ khóa new

Trang 20

112

Nếu một lớp không có constructor thì java sẽ cung c p cho lớp một constructor mặc định (default constructor) Những thuộc tính, biến của lớp sẽ được khởi tạo bởi các giá trị mặc định (số: thường là giá trị 0, ki u luận lý là giá trị false, ki đối tượng giá trị

private String hoTen;

private int namSinh;

private float heSoLuong;

Trang 21

public float luong() {

return luongCB * heSoLuong;

NhanVien nv1 = new NhanVien();

System.out.println(“Luong cua “ + nv1.getHoTen() + “ la “+nv1.luong())

; Nhan ien nv2 = new Nhan ien(“A”,1980,1.96F);

System.out.println((“Luong cua “+nv2.getHoTen() + “ la “+nv2.luong())

; }

}

Ví dụ2:Viết lại sử dụng biến lớp và hàm lớp

class NhanVien{

//Các biến thành viên và hàm như v ụ 1, và bổ sung:

static float tongLuong;

static void tinhTong(NhanVien nv){

tongLuong = tongLuong + nv.luong();

Trang 22

NhanVien[] nv = new NhanVien[n];

BufferedReader kbd = new BufferedReader(new InputStreamReader(System.in));

for (int i=0;i<n;i++){

Trang 23

115

Phương thức finalize() là một phương thức đặc biệt được cài đặt sẵn cho các lớp Trình dọn dẹp hệ thống sẽ gọi phương thức nà trước khi hủy một đối tượng Vì vậy việc cài đặt một số thao tác giải phóng, dọn dẹp vùng nhớ đã c p phát cho các đối tượng dữ liệ trong phương thức finalize() sẽ giúp cho người lập trình chủ động ki m soát tốt quá trình hủ đối tượng thay vị giao cho trình dọn dẹp hệ thống tự động Đ ng thời việc cài đặt trong phương thức finalize() sẽ giúp cho bộ nhớ được giải phóng tốt hơn g p ph n cải tiến tốc độ chương trình

Ví dụ:

class A{

// Khai báo các thuộc tính

public void method_1(){

// … }

protected void finalize(){

// Có thể ùng để đóng tất cả các kết nối // vào cơ sở dữ liệu trước khi hủy đối tượng

// … }

}

3.3.5 Từ khóa this ([2] trang 131)

Biến this là một biến ẩn t n tại trong t t cả các lớp trong ngôn ngữ java Một class trong Java luôn t n tại một biến this, biến this được sử dụng trong khi chạy và tham khảo đến bản thân lớp chứa nó

Từ khoá thi ùng đ chỉ đến đối tượng hiện hành Bình thường, khi các hàm truy

xu tbiến thành viên hay hàm ngay trong lớp của nó, chỉ c n ghi tên của biến thành viên hay hàm mà không c n chỉ r tên đối tượng hay lớp, java tự hi u là biến hay hàm của lớp hiện hành Tuy nhiên sử dụng từ khoá thi đ truy xu t hàm hay biến thành viên ngay trong lớp của nó là c n thiết trong một số trường hợp ha làm cho chương trình r ràng

dễ đọc hơn

Trang 24

Ví dụ:

<tiền tố> class A{

<tiền tố> int <field_1>;

<tiền tố> String <field_2>;

<tiền tố> <kiểu trả về> <method_2>(){

this.method_1() // …

}

}

í ụ 1:

class NhanVien {

private String hoTen;

private int namSinh;

private float heSoLuong;

NhanVien(String hoTen, int namSinh, float heSoLuong) {

this.hoTen = hoTen;

Trang 25

public static void main(String args[]) {

ViDu v = new ViDu(2);

v.hienThi();

}

}

3.3.6 Khai báo chồng phương thức (Overloa ing metho ) ([2] trang 121)

Java cho ph p bạn định nghĩa nhi hàm hoặc phương thức trùng tên trong cùng một lớp nhưng khác tham ố (khác ki u dữ liệu, khác số lượng tham số) Java xem đâ là các hàm khác nha hả năng như vậ gọi là nạp ch ng hàm

Hàm khởi tạo cũng c th được nạp ch ng như hàm bình thường nghĩa là ta được

ph p định nghĩa nhi hàm khởi tạo khác nha v số lượng ha ki tham đối

Ví dụ:

public class xemay{

// khai báo fiel s …

public float tinhgiaban(){

Trang 26

118

return 2 * chiphisx;

}

public float tinhgiaban(float huehong){

return (2 * chiphisx + huehong);

}

}

3.3.7 Truyền tham đối cho hàm

Java ùng cả hai cách tr n tham đối cho hàm: tr n bằng giá trị và tr n bằng tham chiế tù vào cái gì được tr n

- Truy n bằng tham chiếu: truy n tham chiếu, không phải truy n giá trị của tham đối thực sự cho tham đối hình thức, vì vậ tha đổi với tham đối hình thức sẽ tác động đến tham đối thực sự nghĩa là tham đối thực sự sẽ chịu ảnh hưởng bởi sự tha đổi của hàm

Khi ta truy n một đối tượng ki u phức hợp như mảng và lớp cho hàm

Hàm xử lý biến thành viên (biến lớp, biến đối tượng) trong lớp của nó

- Truy n bằng giá trị: sao chép giá trị của tham đối thực sự cho tham đối hình thức

Vì vậ tha đổi trên tham đối hình thức không tác động đến tham đối thực sự nghĩa là tham đối hình thức không tha đổi trước và sau khi truy n cho hàm

Khi ta truy n một ki cơ bản cho hàm, và cả đối tượng ki u lớp String, StringBuffer, các lớp bọc ki như Integer Float Do ble Character…

public static void main(String[] args) {

String s=”Ban đầu”; System.out.println(s);

new TruyenChuoi().thayChuoi(s);

System.out.println(s);

Trang 27

119

}

}

3.4 Đặc điểm hướng đối tượng trong java

H trợ những nguyên tắc cơ bản của lập trình hướng đối tượng, t t cả các ngôn ngữ lập trình k cả ava đ c ba đặc đi m ch ng: tính đ ng g i (encap lation) tính đa hình(polymorphism), và tính kế thừa (inheritance)

3.4.1 Đóng gói (Encapsulation)

Cơ chế đ ng g i trong lập trình hướng đối tượng giúp cho các đối tượng d đ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 Hay chúng ta có th nói đối tượng là một thành tố h trợ tính đ ng g i

Đơn vị đ ng g i cơ bản của ngôn ngữ java là class Một cla định nghĩa hình thức của một đối tượng Một cla định rõ những thành ph n dữ liệ và các đoạn mã cài đặt các thao tác xử lý trên các đối tượng dữ liệ đ Java ùng cla đ xây dựng những đối tượng Những đối tượng là những th hiện (instances) của một class

Một lớp bao g m thành ph n dữ liệu và thành ph n xử lý Thành ph n dữ liệu của một lớp thường bao g m các biến thành viên và các biến th hiện của lớp Thành ph n xử

lý là các thao tác trên các thành ph n dữ liệ thường trong ava người gọi là phương thức Phương thức là một thuật ngữ hướng đối tượng trong ava trong C/C người ta thường dùng thuật ngữ là hàm

3.4.2 Đa hình (Polymorphism) ([2] trang 213)

ính đa hình 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 đối tượng có th có nhi u ki u khác nhau gọi là tính đa hình

Trang 28

}

class C{

public static void main(String[] args){

// Tạo một mảng 2 phần tử kiểu

A A_Object arr_Object = new A_Object[2];

B_Object var_1 = new B_Object();

// Phần tử đầu tiên của mảng arr_Object[0]

//tham chiếu đến 1 đối tượng kiểu B_Object dẫn //xuất từ A_Object arr_Object[0] = var_1; A_Object var_2;

for (int i=0; i<2; i++){

var_2 = arr_Object[i];

var_2.method_1();

} }

}

Vòng lặp for trong đoạn chương trình trên:

- Với i = 0 thì biến var_2 có ki u là B_Object, và lệnh var_2.method_1() sẽ gọi

thực hiện phương thức method_1 của lớp B_Object

- Với i = 1 thì biến var_2 có ki u là A_Object, và lệnh var_2.method_1() sẽ gọi

thực hiện phương thức method_1 của lớp A_Object

Trong ví dụ trên đối tượng var_2 có th nhận ki u A_Object hay B_Object Hay nói cách khác, một biến đối tượng ki A_Ob ect như var_2 trong ví ụ trên có th tham chiế đến

b t kỳ đối tượng nào của b t kỳ lớp con nào của lớp A_Object (ví dụ var_2 có th tham

Trang 29

121

chiế đến đối tượng var_ var_ là đối tượng của lớp B_Object d n xu t từ lớp A_Ob ect) Ngược lại một biến của lớp con không th tham chiế đến b t kỳ đối tượng nào của lớp cha

3.4.3 Tính kế thừa (Inheritance) ([1] trang 67, [2] trang 139)

Một lớp con (subclass) có th kế thừa t t cả những vùng dữ liệ và phương thức của một lớp khác (siêu lớp - percla ) Như vậy việc tạo một lớp mới từ một lớp đã biết sao cho các thành ph n (fields và methods) của lớp cũ cũng ẽ thành các thành ph n (fields và methods) của lớp mới hi đ ta gọi lớp mới là lớp d n xu t (derived class) từ lớp cũ ( percla ) C th lớp cũ cũng là lớp được d n xu t từ một lớp nào đ nhưng đối với lớp mới vừa tạo thì lớp cũ đ là một lớp siêu lớp trực tiếp (immediate supperclass)

Dùng từ kh a exten đ chỉ lớp d n xu t

class A extends B{

// …

}

3.4.3.1 Khai báo phương thức chồng (Overri ing Metho )

Tính kế thừa giúp cho các lớp con nhận được các thuộc tính/phương thức public và protected của lớp cha Đ ng thời cũng c th thay thế các phương thức của lớp cha bằng cách khai báo ch ng Chẳng hạn phương thức tinhgiaban() áp dụng trong lớp xega sẽ cho kết quả g p 2.5 l n chi phí sản xu t thay vì g p 2 chi phí sản xu t giống như trong lớp xemay

Trang 30

Java cung c p 3 ti n tố/từ kh a đ h trợ tính kế thừa của lớp:

public: lớp có th truy cập từ các g i chương trình khác

final: Lớp hằng, lớp không th tạo d n xu t (không th c con) ha đôi khi người

ta gọi là lớp “vô inh”

abstract: Lớp trừ tượng (không có khai báo các thành ph n và các phương thức

trong lớp trừ tượng) Lớp d n xu t sẽ khai báo cài đặt cụ th các thuộc tính phương thức của lớp trừ tượng

Ví dụ:

import java.io.*;

class NhanVien {

protected String hoTen;

protected int namSinh;

void nhap() throws IOException {

BufferedReader kbd = new BufferedReader(new InputStreamReader(System.in));

class NVBienChe extends NhanVien {

private float heSoLuong;

Trang 31

123

//Viết chồng hàm nhap() của lớp cha

void nhap() throws IOException {

BufferedReader kbd = new BufferedReader(new InputStreamReader (System.in));

Bạn c th tự thêm lệnh gọi hàm khởi tạo ở lớp cha c ạng như a :

super(Parameter-List)

Parameter- i t là anh ách các tham đối c n thiết cho hàm khởi tạo của lớp cha

- Dạng 2: ùng đ hàm lớp con tr x t hàm kế thừa từ lớp cha :

super.Member

ember c th là hàm ha biến thành viên của đối tượng

Ví dụ1:

import java.io.*;

Ngày đăng: 19/02/2016, 22:02

HÌNH ẢNH LIÊN QUAN

Bảng phân chia thời lượng: - Lap Trinh java  bai giang chuong 3
Bảng ph ân chia thời lượng: (Trang 1)

TỪ KHÓA LIÊN QUAN