1. Trang chủ
  2. » Luận Văn - Báo Cáo

chapter 2 lập trình hdt oop lập trình java

149 1 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Chương 2: Lập Trình HĐT OOP
Chuyên ngành Lập trình Java
Thể loại Giáo trình
Định dạng
Số trang 149
Dung lượng 1,8 MB

Nội dung

Mỗi đối tượng có bản sao các thuộc tính của riêng nó■ Ví dụ: một chiếc Ô tô đang đi có thể có màu đen, vận tốc 60 km/h■ Các thuộc tính phải được khai báo bên trong lớp... Lớp và đối tượn

Trang 1

Chương 2 LẬP TRÌNH HĐT

OOP

Trang 3

GIỚI THIỆU

Trang 4

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

LÀ GÌ ?

Trang 5

Giới thiệu

và phát triển) lập trình dựa trên kiến trúc lớp (class) và đối tượng

(object)

Trang 6

Giới thiệu

● Chương trình được chia thành các đối tượng.

● Các cấu trúc dữ liệu được thiết kế sao cho đặc tả được đối tượng.

● Các hàm thao tác trên các vùng dữ liệu của đối tượng được gắn với cấu trúc dữ liệu đó.

● Dữ liệu được đóng gói lại, được che giấu và không cho phép các hàm ngoại lai truy nhập tự do.

● Các đối tượng tác động và trao đổi thông tin với nhau qua các hàm

● Có thể dễ dàng bổ sung dữ liệu và các hàm mới vào đối tượng nào đó khi cần thiết

● Chương trình được thiết kế theo cách tiếp cận từ dưới lên (bottom-up)

Trang 7

Giới thiệu

● Phương pháp giải quyết ‘top-down’ (từ trên xuống) cũng còn được gọi là ‘lập trình hướng cấu trúc’ (structured programming) Nó xác định những chức năng chính của một chương trình và những chức năng này được phân thành những đơn vị nhỏ hơn cho đến mức độ thấp nhất.

● 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

đề đời thực Để làm được việc này, phương thức OOP che giấu một vài thông tin bên trong các đối tượng OOP tập trung 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, việc này được xem như là phần thừa

kế của việc định nghĩa dữ liệu.

Trang 8

Giới thiệu

Phương pháp Top-Down OOP

Chúng ta sẽ xây dựng một khách sạn.

Chúng ta sẽ xây dựng một tòa nhà 10 tầng với những dãy có các phòng trung bình, có các phòng sang trọng, và một phòng họp lớn.

Chúng ta sẽ thiết kế các tầng lầu, các phòng và phòng họp.

Chúng ta sẽ xây dựng một khách sạn với những thành phần trên.

Trang 9

Giới thiệu

● Abstraction: Trừu tượng hóa

● Encapsulation: Đóng gói

● Inheritance: Kế thừa

● Polymorphism: Đa hình

Trang 10

Giới thiệu

Trang 11

Các khái niệm cơ bản

chất và hành vi chung của những sự vật, hiện tượng tồn tại trongthực tế

học…

Lớp là cách phân loại (classify) các đối tượng dựa trên đặc điểm

Trang 12

Các khái niệm cơ bản

Đối tượng (object): trong thế giới thực khái niệm đối tượng có thể

giới thực: là một thực thể cụ thể mà ta có thể sờ, nhìn thấy hay cảm nhận được

○ Đối tượng giúp hiểu rõ thế giới thực

○ Cơ sở cho việc cài đặt trên máy tính

○ Mỗi đối tượng có định danh, thuộc tính, hành vi

○ Ví dụ: đối tượng sinh viên

MSSV: “TH0701001”; Tên sinh viên: “Nguyễn Văn A”

Trang 13

Các khái niệm cơ bản

Đối tượng (object) của lớp: một đối tượng cụ thể thuộc 1 lớp là 1

thể hiện cụ thể của 1 lớp đó Một lớp có thể có nhiều thể hiện cụ thể(nhiều đối tượng)

Ví dụ: Sinh viên A, Sinh viên B là đối tượng của lớp Sinh viên.

Trang 14

Các khái niệm cơ bản

Lớp (class): là khuôn mẫu (template) để sinh ra đối tượng Lớp là

sự trừu tượng hóa của tập các đối tượng có các thuộc tính, hành vitương tự nhau, và được gom chung lại thành 1 lớp

Ví dụ: lớp các đối tượng Sinhviên

○ Sinh viên “Nguyễn Văn A”, mã số TH0701001 → 1 đối tượng thuộc lớp

Sinhviên

Sinh viên “Nguyễn Văn B”, mã số TH0701002 → là 1 đối tượng thuộc lớp Sinhviên

Trang 15

Các khái niệm cơ bản

Hệ thống các đối tượng: là 1 tập hợp các đối tượng

○ Mỗi đối tượng đảm trách 1 công việc

○ Các đối tượng có thể quan hệ với nhau

○ Các đối tượng có thể trao đổi thông tin với nhau

○ Các đối tượng có thể xử lý song song, hay phân tán

Trang 16

LỚP VÀ ĐỐI TƯỢNG TRONG JAVA

Trang 17

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

thức (hành vi) dùng để mô tả một nhóm những đối tượng cùng loại

○ Thuộc tính.

○ Phương thức

Trang 18

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

Trang 19

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

■ Các thuộc tính của cũng là các giá trị trừu tượng Mỗi đối tượng có bản sao các thuộc tính của riêng nó

Ví dụ: một chiếc Ô tô đang đi có thể có màu đen, vận tốc 60 km/h

■ Các thuộc tính phải được khai báo bên trong lớp

Trang 20

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

■ Xác định các hoạt động chung mà tất cả các thể hiện của lớp có thể thực hiện được.

■ Xác định cách một đối tượng đáp ứng lại một thông điệp

■ Thông thường các phương thức sẽ hoạt động trên các thuộc tính và

thường làm thay đổi các trạng thái của lớp.

■ Bất kỳ phương thức nào cũng phải thuộc về một lớp nào đó

Ví dụ: Lớp Ô tô có các phương thức

● Tăng tốc

● Giảm tốc

Trang 21

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

kiểu dữ liệu đó

○ Đóng gói: chứa đựng dữ liệu và các hàm/thủ tục liên quan

○ Che giấu dữ liệu: các thực thể phần mềm khác không can thiệp trực tiếp vào dữ liệu bên trong được mà phải thông qua các phương thức cho phép

○ Trừu tượng: Lớp chính là kết quả của quá trình trừu tượng hóa dữ liệu: Lớp định nghĩa một kiểu dữ liệu mới, trừu tượng hóa một tập các đối tượng

Trang 22

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

Khai báo lớp (class):

Trang 23

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

Thuộc tính: các đặc điểm mang giá trị của đối tượng, là vùng dữ

liệu được khai báo bên trong lớp

Trang 24

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

Phương thức: chức năng xử lý, hành vi của các đối tượng Phương

Trang 25

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

Trang 26

Các mức truy cập trong Java

Access Modifer trong Java xác định phạm vi có thể truy cập của biến, phương thức, constructor hoặc lớp Trong java, có 4 phạm vi truy cập của Access Modifier như sau:

Trang 27

Các mức truy cập trong Java

➢ Để bảo vệ dữ liệu tránh bị truy nhập tự do từ bên ngoài, Java sử dụng các

từ khoá quy định phạm vi truy nhập các thuộc tính và phương thức của lớp:

public: Thành phần công khai, truy nhập tự do từ bên ngoài.

protected: Thành phần được bảo vệ, được hạn chế truy nhập.

default (không viết gì): Truy nhập trong nội bộ gói.

private: Truy nhập trong nội bộ lớp.

Trang 28

Các mức truy cập trong Java

Trang 29

Các mức truy cập trong Java

Trang 30

Các mức truy cập trong Java

Trang 31

Các mức truy cập trong Java

Trang 32

Các mức truy cập trong Java

Private Default Protected Public

Cùng package, khác class No Yes Yes Yes

Class con trong cùng package với class cha

Khác package, khác class No No No Yes

Class con khác package với class cha

Trang 33

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

Tiền tố:

public: có thể truy cập được từ bên ngoài lớp khai báo.

protected: có thể truy cập được từ lớp khai báo và các lớp dẫn xuất (lớp con).

private: chỉ được truy cập bên trong 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ó thể được thực hiện kể cả khi không có đối tượng của lớp

final: không được khai báo nạp chồng ớ các lớp dẫn xuất.

abstract: không có phần source code, sẽ được cài đặt trong các lớp dẫn xuất.

synchoronized: dùng để ngăn những tác động của các đối tượngkhác lên đối

tượng đang xét trong khi đang đồng bộ hóa Dùng trong lập trình multithreads.

Trang 34

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

Sinhvien(){}

Sinhvien (…) { …}

… // Danh sách các phương thức

public void capnhatSV (…) {…}

public void xemThongTinSV() {…}

Trang 35

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

// Tạo đối tượng mới thuộc lớp Sinhvien

Sinhvien sv = new Sinhvien();

Trang 36

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

Sinhvien sv = new Sinhvien();

sv.maSv = “TH0601001”; /* Lỗi truy cập thuộc tính private từ bên ngoài lớp khai

báo */

Trang 37

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

thức đặc biệt của lớp, dùng để khởi tạo một đối tượng

oDùng để khởi tạo giá trị cho các thuộc tính của đối tượng.

oCùng tên với lớp.

oKhông có giá trị trả về.

oTự động thi hành khi tạo ra đối tượng (new)

oCó thể có tham số hoặc không.

minh

Trang 38

Khai báo Constructor

Trang 39

Khai báo Constructor

Ví dụ 2:

class Sinhvien{

… // không có constructor mặc định // constructor có đối số

// constructor có đối số Sinhvien(<các đối số>) {…}

}

Sinhvien sv =new Sinhvien();

//Hoặc Sinhvien sv = new Sinhvien (<các đối số>);

Trang 40

Khai báo Constructor

package constructor;

class SinhVien {

private String Ten;

public void In() {

System out println("Ten:"+Ten);

} }

package constructor;

public class Constructor {

public static void main(String[]

args) { SinhVien s= new SinhVien();

s.In();

} }

Ten:null

Trang 41

Khai báo Constructor

package constructor;

class SinhVien {

private String Ten; public

SinhVien() {

Ten="Nguyen Van Tung";

Ten:Nguyen Van Tung

package constructor;

public class Constructor {

public static void main(String[]

args) { SinhVien s= new SinhVien();

s.In();

} }

Trang 42

Khai báo Constructor

p ublic void In(){

System out println("Ten:"+Ten);

package constructor;

public class Constructor {

public static void main(String[] args) {

s= new SinhVien(“Anh SinhVien

Thu”);

s.In();

} }

Trang 43

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

thức có cùng tên nhưng khác tham số (khác kiểu dữ liệu, khác

chồng phương thức)

Trang 44

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

public class OverloadingExample {

static int add(int a, int b) {

Trang 45

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

trùng tên và trùng tham số với một phương thức của lớp cha gọi là

ghi đè phương thức.

Trang 46

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

class Animal {

void eat() { System.out.println("eating ");

} }

class Dog extends Animal {

void eat() { System.out.println("eating bread ");

}

Trang 47

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

Đa hình Thể hiện tính đa hình tại run time Thể hiện tính đa hình tại

compile time.

Danh sách tham số

Danh sách tham số phải giống nhau Danh sách tham số có

thể khác nhau.

Quyền truy cập

Phương thức ghi đè ở lớp con phải có quyền truy cập bằng hoặc lớn hơn phương thức được ghi đè ở lớp cha.

Các phương thức nạp chồng có thể có quyền truy cập khác nhau.

Giá trị trả về Kiểu trả về bắt buộc phải giống nhau Kiểu trả về có thể khác

nhau.

Phạm vi Xảy ra giữa 2 class có quan hệ kế Xảy ra trong phạm vi

Trang 48

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

Trang 49

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

được sử dụng trong khi chạy và tham khảo đến bản thân lớp chứa nó

Trang 50

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

Trang 51

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

public class Account {

// instance variable

String owner; // Account name long balance; // Balance

//

// value setting method

this.owner = owner; this.balance = balance;

} //

}

Trang 52

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

Trang 53

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

public class Account {

String name; //Account name

long balance; //Balance

void display(){ System.out.println(…);

Trang 54

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

public class Account {

String name; //Account name

long balance; //Balance

void display(){ System.out.println(…);

}

void deposit (long money){ balance += money;

} }

// Class that uses methods of Account object

Account obj = new Account();

obj.display();

obj.deposit(1000000);

Trang 55

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

Trang 57

CÁC ĐẶC ĐIỂM

Trang 58

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

Trang 59

1 Tính đóng gói

sử dụng một cái tên để gọi

bên trong với bên ngoài

cập (access modifier) Ngoài ra, các lớp liên quan đến nhau có thể được gom chung lại thành package

Trang 60

1 Tính đóng gói

Ví dụ:

○Các phương thức đóng gói các câu lệnh.

○Đối tượng đóng gói dữ liệu và các hành vi / Phương thức liên quan.

(Đối tượng = Dữ liệu + Hành vi/Phương thức)

package <tên gói>; // khai báo trước khi khai báo lớp

class <tên lớp> {

Trang 61

1 Tính đóng gói

package VD1;

public class SinhVien {

public void In(){

System out println("Ten:");

} }

SinhVien();

sv.In();

} }

Trang 62

2 Tính kế thừa

lớp đã có Xây dựng các lớp mới có sẵn các đặc tính của lớp cũ, đồng thời lớp mới có thể mở rộng các đặc tính của nó

Lớp kế thừa gọi là lớp con (child, subclass), lớp dẫn xuất (derived

sở (base class)

Mối quan hệ kế thừa: Lớp con là một loại (is-a-kind-of) của lớp

cha, kế thừa các thành phần dữ liệu và các hành vi của lớp cha Có thể khai báo thêm thuộc tính, phương thức cho phù hợp với mục

Trang 63

2 Tính kế thừa

o Thừa hưởng các thuộc tính và phương thức đã có

o Bổ sung, chi tiết hóa cho phù hợp với mục đích sử dụng mới

Thuộc tính: thêm mới

Phương thức: thêm mới hay hiệu chỉnh

Đối tượng hình học

Trang 64

2 Tính kế thừa

(thuộc tính), phương thức của lớp cha (public, protected, default)

Trang 65

2 Tính kế thừa

o Được định nghĩa trong lớp con

o Có tên, kiểu trả về & các đối số giống với phương thức của lớp cha

o Có kiểu, phạm vi truy cập không “nhỏ hơn” phương thức trong lớp cha

Trang 66

class HinhVuong extends Hinhhoc {

private int canh;

public float tinhdientich() { return canh*canh;

Trang 67

là public

Trang 68

2.1 Từ khóa super

class SinhVien extends nguoi {

public void show(){

System.out.println(“ ”);

super (‘A’,20);

}

câu lệnh đầu tiên

Trang 69

2.2 Constructor Inheritance

○ Khai báo về thừa kế trong hàm khởi tạo

○ Chuỗi các hàm khởi tạo (Constructor Chaining)

○ Các nguyên tắc của hàm khởi tạo (Rules)

○ Triệu hồi tường minh hàm khởi tạo của lớp cha

Trang 70

2.2 Constructor Inheritance

loại phương thức khác

khởi tạo của lớp cha, tiếp đó mới là hàm khởi tạo của lớp con

Trang 71

class F1 extends Parent{

public F1() { System out println("This is constructor of F1 class");

} }

Trang 72

Khi tạo một thể hiện của lớp dẫn xuất, trước hết phải gọi đến hàm khởi tạo của lớp cha, tiếp đó là hàm khởi tạo của lớp con.

Trang 73

2.4 Các nguyên tắc của hàm khởi tạo

bởi trình biên dịch nếu lớp không khai báo hàm khởi tạo

sẽ không còn được sử dụng

lớp con, trình biên dịch sẽ tự động chèn lời gọi tới hàm khởi tạo

mặc nhiên (implicity) hoặc hàm khởi tạo không tham số (explicity) của lớp cha trước khi thực thi đoạn code khác trong hàm khởi tạo lớp con

Trang 74

2.4 Các nguyên tắc của hàm khởi tạo

Có 1 vấn đề?

Lỗi: Không tìm hàm khởi tạo của lớp Parent không có tham số

Trang 75

2.4 Các nguyên tắc của hàm khởi tạo

Sửa: Thêm hàm khởi tạo lớp Parent

Trang 76

2.4 Các nguyên tắc của hàm khởi tạo

● Triệu hồi tường minh hàm khởi tạo lớp cha

Trang 77

2.4 Các nguyên tắc của hàm khởi tạo

Trang 78

2.4 Các nguyên tắc của hàm khởi tạo

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

Trang 79

2.5 Ví dụ

class Person {

private String CMND;

private String Name;

private int age;

public Person( String cm, String na, int a){

CMND=cm;

Name=na;

age=a;

}

public void Print(){

System out println("Chung minh"+"\t"+"Tên"+"\t"+"Tuoi");

System out print(CMND+"\t"+Name+"\t"+age);

}

} 45

Trang 80

2.5 Ví dụ

class Employee extends Person {

private double salary;

public Employee( String cm, String na, int a, double sa){

Trang 81

2.5 Ví dụ

class Maneger extends Employee {

private double allowance;

public Maneger( String cm, String na, int a, double sa, double allow){

Trang 82

2.5 Ví dụ

class Maneger extends Employee {

private double allowance;

public Maneger( String cm, String na, int a, double sa, double

allow){ super (cm,na,a,sa);

Trang 83

2.5 Ví dụ

public class Nhanvien { public static void main(String[] args) {

Person p= new Person("1234", "NGuyen Huu Đat",23);

Employee e= new Employee("2345","Tran Ngoc Tuan", 24,10000000);

Maneger mng= new Maneger("3456", "Lê Văn Toàn",25,10000000,2000000);

System out println("Thong tin nguoi:");

p Print ();

System out println();

System out println("Thong nhan vien:");

e Print ();

System out println();

System out print("Thong tin quan ly");

mng Print ();

} }

Trang 84

Kết quả

Thong tin nguoi:

Chung minh Tên Tuoi

1234 Nguyen Huu Đat 23 Thong nhan

vien:

Chung minh Tên Tuoi

2345 Tran Ngoc Tuan 24Luong thang:1.0E7 Thong tin

quan lyChung minh Tên Tuoi

3456 Lê Văn Toàn 25Luong thang:1.0E7Phu cap:2000000.0

Trang 85

2.6 Từ khóa Final

➢ Biến Final - Final Variables

➢ Phương thức Final - Final Methods

➢ Lớp Final - Final Classes

Trang 87

2.6.2 Phương thức final

➢ Được sử dụng để ngăn chặn việc ghi đè ( override ) hoặc che lấp ( hidden ) trong các lớp Java.

➢ Phương thức được khai báo là private hoặc là một thành phần của lớp

final thì được xem là phương thức hằng.

➢ Phương thức hằng không thể khai báo là trừu tượng ( abstract ).

Trang 88

2.6.3 Lớp Final

➢ Là lớp không có lớp con (lớp vô sinh)

➢ Hay: là lớp không có kế thừa

➢ Được sử dụng để hạn chế việc thừa kế và ngăn chặn việc sửa đổi một lớp.

Ngày đăng: 27/04/2024, 10:57

HÌNH ẢNH LIÊN QUAN

Hình 2d Hình 3d - chapter 2 lập trình hdt oop lập trình java
Hình 2d Hình 3d (Trang 63)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN