Dong Goi Va Truu Tuong Hoa Du Lieu Trong Java

53 10 0
Dong Goi Va Truu Tuong Hoa Du Lieu Trong Java

Đ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

 Tập hợp các thể hiện của các thực thể thành các nhóm có chung các thuộc tính gọi là Lớp (class)..  Ví dụ: Trừu tượng hóa các sinh viên cụ thể trong lớp học thành một lớp SinhVien..[r]

(1)

LẬP TRÌNH JAVA

LẬP TRÌNH JAVA

Bài 5

Bài 5: Đóng gói và trừu tượng : Đóng gói và trừu tượng hóa liệu

(2)

Mục tiêu

Mục tiêu

 Kết thúc bài học bạn có thể nắm được:

 Nêu được chất, vai trò trừu tượng hóa

liệu

 Giải thích đóng gói và che giấu thông tin

(Encapsulation & Information Hiding)

 Thực thi Java

 Khai báo lớp Java

(3)

Nội dung

Nội dung

 5.1 Trừu trượng hóa liệu

 5.2 Đóng gói và che giấu thông tin  5.3 Khai báo lớp

 5.4 Các thành viên lớp

 5.5 Chồng phương thức

(4)

5.1- Trừu tượng hóa liệu

5.1- Trừu tượng hóa liệu

 Trừu tượng hóa liệu (Data abstraction)

 Khi khơng thể nắm bắt tồn đối tượng phức tạp  Bỏ qua chi tiết khơng cần thiết, thay vào

là mơ hình đối tượng tổng quát

(5)

5.1- Trừu tượng hóa liệu

5.1- Trừu tượng hóa liệu

 Trừu tượng hóa liệu (Data abstraction)

 Một cách nhìn cách biểu diễn thực thể bao gồm thuộc tính liên quan ngữ cảnh

 Tập hợp thể thực thể thành nhóm có chung thuộc tính gọi Lớp (class)

(6)

Nội dung

Nội dung

 5.1 Trừu trượng hóa liệu

 5.2 Đóng gói và che giấu thông tin  5.3 Khai báo lớp

 5.4 Các thành viên lớp

 5.5 Chồng phương thức

(7)

5.2- Đóng gói & che giấu tt

5.2- Đóng gói & che giấu tt

 Đóng gói che giấu thơng tin

 Dữ liệu/Thuộc tính hành vi/Phương thức đóng gói lớp  Encapsulation

 Dữ liệu che giấu bên lớp truy cập thay đổi phương thức bên

(8)

Nội dung

Nội dung

 5.1 Trừu trượng hóa liệu

 5.2 Đóng gói và che giấu thông tin  5.3 Khai báo lớp

 5.4 Các thành viên lớp

 5.5 Chồng phương thức

(9)

5.3- Khai báo lớp

5.3- Khai báo lớp

 Đóng gói thuộc tính (attributes/fields)

phương thức (methods)

 Thuộc tính phương thức gọi thành viên (members) lớp

 Các lớp nhóm lại thành package

 Một package bao gồm tập hợp lớp có quan hệ logic với

 Ví dụ: javax.swing, java.util…

(10)

5.3- Khai báo lớp

5.3- Khai báo lớp

 Khai báo lớp:

 Định danh khai báo lớp xác định tên lớp  Cú pháp khai báo:

chi_dinh_truy_cap class TenLop {

// Than lop

}

chi_dinh_truy_cap:

public: Lớp truy cập từ

đâu, kể bên ngồi package chứa lớp

private: Chỉ truy cập phạm

(11)

5.3- Khai báo lớp

5.3- Khai báo lớp

 Khai báo lớp:

class Circle {

double radius = 1.0;

Circle(){ }

Circle(double newRadius){ radius = newRadius; }

double findArea(){

Data field

Contructors

(12)

5.3- Khai báo lớp

5.3- Khai báo lớp

 Khai báo lớp thuộc gói (Package)

 Lớp khai báo thuộc package đó

 Cú pháp: package <Ten_package>;  Ví dụ:

package com.hello;

public class HelloWorld {

(13)

Nội dung

Nội dung

 5.1 Trừu trượng hóa liệu

 5.2 Đóng gói và che giấu thông tin  5.3 Khai báo lớp

 5.4 Các thành viên lớp

 5.5 Chồng phương thức

(14)

5.4- Các thành viên lớp

5.4- Các thành viên lớp

 Bao gồm: Thuộc tính phương thức 

Phạm vi lớp (giữa dấu { }):

 Bên phạm vi lớp, thành viên lớp truy cập thông qua tên gọi.

 Bên ngồi phạm vi lớp, có định truy cập tới thành viên lớp gồm có:

(15)

5.4- Các thành viên lớp

5.4- Các thành viên lớp

 Các định truy nhập:

public Không có private

Cùng lớp Yes Yes Yes

Cùng gói Yes Yes No

(16)

5.4- Các thành viên lớp

5.4- Các thành viên lớp

 Ví dụ:

public class HelloWorld1 { // Cac thuoc tinh

private int iValue = 12;

float fValue = 3.45f; //package

// Phuong thuc main

public static void main(String args[]) {

System.out.println(“Hello World!"); System.out.println(“Gia tri nguyen:

”+iValue);

System.out.println(“Gia tri thuc: ”+fValue);

Trong một file java

Trong mợt file java

có mợt lớp

(17)

5.4- Các thành viên lớp

5.4- Các thành viên lớp

 Thuộc tính (Field/Attribute)

 Các đối tượng giữ lại trạng thái thuộc tính (attributes) hay trường (fields)

 Các thuộc tính định nghĩa lớp

 Mỗi đối tượng có thuộc tính riêng

 Thuộc tính khởi tạo khai báo

 Các giá trị mặc định sử dụng không khởi

(18)

5.4- Các thành viên lớp

5.4- Các thành viên lớp

 Phương thức (method)

 Một phương thức tập câu lệnh nhóm lại với nhằm thực cơng việc

 Xác định cách đối tượng đáp ứng lại thông điệp  Phương thức xác định hoạt động lớp

 Tất phương thức phải thuộc lớp

(19)

5.4- Các thành viên lớp

5.4- Các thành viên lớp

 Phương thức (method)

 Cấu trúc phương thức:

 parameter profile gồm kiểu, thứ tự, số tham số

phương thức

 method signature (header) gồm tên phương thức

parameter profiles

 Các tham số khai báo method header gọi

tham số hình thức (formal parameters)

 Khi phương thức gọi, tham số hình thức

(20)

5.4- Các thành viên lớp

5.4- Các thành viên lớp

 Phương thức (method)

 Chữ ký phương thức (signature)

 Mỗi phương thức phải có chữ ký riêng Chữ ký phương thức bao gồm:

 Tên phương thức

(21)

5.4- Các thành viên lớp

5.4- Các thành viên lớp

 Phương thức (method)

 Kiểu liệu trả về:

 Khi phương thức trả giá trị đối tượng bắt buộc phải có câu lệnh return để trả điều khiển cho đối tượng gọi phương thức

 Nếu phương thức không trả giá trị kiểu trả

về void khơng cần câu lệnh return

 Có thể có nhiều lệnh return phương thức;

(22)

5.4- Các thành viên lớp

5.4- Các thành viên lớp

 Phương thức (method)

 Cách gọi phương thức

public static void main(String[] args) { int i = 5;

int j = 2;

int k = max(i, j);

System.out.println(

"The maximum between " + i + " and " + j + " is " + k); }

public static int max(int num1, int num2) { int result;

if (num1 > num2) result = num1; else

result = num2; return result; }

pass i

(23)

5.4- Các thành viên lớp

5.4- Các thành viên lớp

 Phương thức (method)

 Cách gọi phương thức The main method

i: j: k:

(24)

5.4- Các thành viên lớp

5.4- Các thành viên lớp

 Phương thức (method)

Câu lệnh trả giá trị bắt buộc phải có phương

thức non-void

Phương thức sau logic, có lỗi biên dịch

trình biên dịch Java nghĩ phương thức không trả giá trị

public static int xMethod(int n) { if (n > 0) return 1;

(25)

5.4- Các thành viên lớp

5.4- Các thành viên lớp

 Phương thức (method)

 Đơi có nhiều đáp ứng gọi phương thức, trình biên dịch khơng thể xác định đáp ứng thích hợp nhất Điều gọi "Gọi mập mờ"

(26)

5.4- Các thành viên lớp

5.4- Các thành viên lớp

 Phương thức (method) public class AmbiguousOverloading {

public static void main(String[] args) { System.out.println(max(1, 2));

}

public static double max(int num1, double num2) { if (num1 > num2)

return num1; else

return num2; }

public static double max(double num1, int num2) { if (num1 > num2)

(27)

5.4- Các thành viên lớp

5.4- Các thành viên lớp

 Phương thức (method)

 Biến cục (local variable): biến khai báo phương thức

 Phạm vi: phần chương trình mà biến tham chiếu

 Phạm vi biến cục khai báo đến cuối block chứa biến Một biến cục phải khai báo trước sử dụng

(28)

5.4- Các thành viên lớp

5.4- Các thành viên lớp

 Phương thức (method)

// Fine with no errors

public static void correctMethod() { int x = 1;

int y = 1;

// i is declared

for (int i = 1; i < 10; i++) { x += i;

}

// i is declared again

(29)

5.4- Các thành viên lớp

5.4- Các thành viên lớp

 Phương thức (method)

// With error

public static void incorrectMethod() { int x = 1;

int y = 1;

for (int i = 1; i < 10; i++) { int x = 0;

x += i; }

(30)

5.4- Các thành viên lớp

5.4- Các thành viên lớp

 Phương thức (method)  Lợi ích phương thức:

 Viết lần, dùng nhiều lần

(31)

5.4- Các thành viên lớp

5.4- Các thành viên lớp

 Cơ chế che giấu thông tin Java  Các thành viên liệu

 Chỉ truy nhập từ phương thức bên lớp  Chỉ định truy cập private để bảo vệ liệu

 Các đối tượng khác muốn truy nhập vào liệu riêng tư phải thông qua phương thức

(32)

5.4- Các thành viên lớp

5.4- Các thành viên lớp

 Mô tả lớp:  + : public  - : private

 # : protected  Ví dụ:

 Xây dựng lớp SinhVien:

SinhVien

- HoTen: String - MaSo: String - Diem: Float

Tên lớp

- Thuộc_tính: Kiểu liệu

(33)

5.4- Các thành viên lớp

5.4- Các thành viên lớp

 Ví dụ:

public class SinhVien {

private String HoTen; private String MaSo; private float Diem;

public void HienThongTin() {

System.out.println(“Họ tên sinh viên: ” + HoTen); System.out.println(“Mã số sinh viên: ” + MaSo); System.out.println(“Điểm: ” + Diem);

(34)

5.4- Các thành viên lớp

5.4- Các thành viên lớp

public class SinhVien {

//

//Các phương thức get set

public String getHoTen() { return HoTen;

}

public void setHoTen(String ht) { HoTen = ht;

}

//tương tự với thuộc tính MaSo

public float getDiem() { return Diem;

(35)

Nội dung

Nội dung

 5.1 Trừu trượng hóa liệu

 5.2 Đóng gói và che giấu thông tin  5.3 Khai báo lớp

 5.4 Các thành viên lớp

 5.5 Chồng phương thức

(36)

5.5- Chồng phương thức

5.5- Chồng phương thức

 Các phương thức trùng tên

chữ ký phải khác  Chồng phương

thức (Method Overloading):

 Số lượng tham số khác

 Nếu số lượng tham số kiểu liệu tham số phải khác

 Thuận tiện cho lập trình khơng cần phải nhớ

(37)

5.5- Chồng phương thức

5.5- Chồng phương thức

 Ví dụ 1:

 Phương thức println()

System.out.println() có 10 khai báo với

tham số khác nhau: boolean, char[], char,

double, float, int, long, Object, String,

một khơng có tham số

 Không cần sử dụng tên khác (chẳng hạn "printString“ "printDouble“) cho kiểu

(38)

5.5- Chồng phương thức

5.5- Chồng phương thức

 Ví dụ 2:

class MyDate {

public boolean setMonth(int m) { …}

public boolean setMonth(String s) { …} }

MyDate d = new MyDate(); d.setMonth(9);

(39)

Nội dung

Nội dung

 5.1 Trừu trượng hóa liệu

 5.2 Đóng gói và che giấu thông tin  5.3 Khai báo lớp

 5.4 Các thành viên lớp

 5.5 Chồng phương thức

(40)

5.6- Gói (Package)

5.6- Gói (Package)

 Các lớp nhóm lại với thành gói (package)  Gói coi thư mục, nơi tổ chức lớp  Theo quy ước, tên package viết ký

tự thường

 Các package khác chứa lớp có tên

(41)

5.6- Gói (Package)

5.6- Gói (Package)

 Lợi ích package:

 Giúp tổ chức lớp vào đơn vị (như thư mục) giúp xác định vị trí trở nên dễ dàng sử

dụng lớp cách phù hợp

 Tránh cho việc đặt tên lớp bị xung đột (trùng tên)  Bảo vệ lớp, liệu phương thức mức rộng

hơn so với mối quan hệ lớp

(42)

5.6- Gói (Package)

5.6- Gói (Package)

 Tham chiếu lớp:

 Trong package: Sử dụng tên lớp

 Khác package: Phải cung cấp tên đầy đủ cho lớp

được định nghĩa package khác

 Ví dụ:

public class HelloNameDialog{

public static void main(String[] args){ String result;

result = javax.swing.JOptionPane.showInputDialog (“Hay nhap ten ban:”);

(43)

5.6- Gói (Package)

5.6- Gói (Package)

 Lệnh import:

 Sử dụng lệnh import để khai báo package

hoặc lớp để sử dụng không cần nêu tên đầy đủ

 Ví dụ:

import javax.swing.JOptionPane; public class HelloNameDialog{

public static void main(String[] args){ String result;

result = JOptionPane.showInputDialog

(“Hay nhap ten ban:”);

(44)

5.6- Gói (Package)

5.6- Gói (Package)

 Các Package Java  java.lang

 Cung cấp lớp cho thiết kế ngôn ngữ lập trình

Java

 Bao gồm wrapper classes, String StringBuffer, Object,  Import ngầm định vào tất lớp

java.util

 Bao gồm tập hợp framework, mơ hình kiện, date time,

và nhiều tiện ích khác

java.io

(45)

5.6- Gói (Package)

5.6- Gói (Package)

 Các Package Java  java.math

 Cung cấp lớp thực thi phép toán với số nguyên

các phép toán thập phân

java.sql

 Cung cấp API cho phép truy nhập xử lý liệu

lưu trữ nguồn liệu (thường sử dụng sở liệu quan hệ)

javax.swing

 Cung cấp lớp giao diện cho phép tạo ứng

(46)

5.6- Gói (Package)

5.6- Gói (Package)

java.math

 Các lớp:

 PI  E

 Các phương thức lớp:

 Các phương thức lượng giác  Các phương thức số mũ

 Các phương thức làm tròn

(47)

5.6- Gói (Package)

5.6- Gói (Package)

java.math

 Các phương thức lượng giác

(48)

5.6- Gói (Package)

5.6- Gói (Package)

java.math

 Các phương thức lượng giác

Phương thức Giá trị trả về

 Math.sin(0) 0.0

 Math.sin(Math.PI/6) 0.5

 Math.cos(0) 1.0

(49)

5.6- Gói (Package)

5.6- Gói (Package)

java.math

 Các phương thức số mũ

Phương thức Giá trị trả về

 Math.exp(double a) ea

 Math.log(double a) ln(a)

(50)

5.6- Gói (Package)

5.6- Gói (Package)

java.math

 Các phương thức làm tròn

 double ceil(double x)

x làm tròn lên giá trị nguyên gần Giá trị nguyên trả giá trị thực

 double floor(double x)

x làm tròn xuống giá trị nguyên gần Giá trị nguyên

được trả giá trị thực

 double rint(double x)

x làm tròn đến giá trị nguyên gần Nếu phần lẻ x 0.5 giá trị số chẵn

(51)

5.6- Gói (Package)

5.6- Gói (Package)

java.math

 Các phương thức làm tròn

(52)

5.6- Gói (Package)

5.6- Gói (Package)

java.math

 Các phương thức min, max, abs, random

 Math.max(a, b) ; Math.min(a, b)

Trả giá trị lớn / nhỏ tham số a, b

 Math.abs(a)

Trả giá trị tuyệt đối a

 Math.random()

(53)

5.6- Gói (Package)

5.6- Gói (Package)

java.math

 Các phương thức min, max, abs, random

 Math.max(2, 3) 3

 Math.max(2.5, 3) 3.0

 Math.abs(-2.4) 2.4

 10+(int)(Math.random()*20)

Số nguyên thuộc [10, 29]

Ngày đăng: 22/05/2021, 21:24

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

Tài liệu liên quan