SlideShare uma empresa Scribd logo
1 de 71
Baixar para ler offline
Bài 3
Xây dựng lớp
Trịnh Thành Trung
trungtt@soict.hust.edu.vn
Nội dung
1. Trừu tượng hóa dữ liệu
2. Lớp và thành phần của
lớp
3. Xây dựng lớp
4. Tạo và sử dụng đối
tượng
5. Thành viên hằng & tĩnh
6. Biểu đồ lớp
Trừu tượng hóa dữ liệu
Data abstraction
1
4
Trừu tượng hóa
• Abstraction
− "a concept or idea not associated with any specific
instance"
• Giảm thiểu và tinh lọc các chi tiết nhằm tập trung
vào một số khái niệm/vấn đề quan tâm tại một
thời điểm.
− Ví dụ: Các định nghĩa toán học: Ký hiệu x được dùng để
thể hiện cho các phép nhân
5
Trừu tượng hóa
• Trừu tượng hóa điều khiển: Sử dụng các chương
trình con (subprogram) và các luồng điều khiển
(control flow)
− Ví dụ: a := (1 + 2) * 5
+ Nếu không có trừu tượng hóa điều khiển, LTV phải chỉ ra tất
cả các thanh ghi, các bước tính toán mức nhị phân…
• Trừu tượng hóa dữ liệu: Xử lý dữ liệu theo các
cách khác nhau
− Ví dụ: Kiểu dữ liệu
+ Sự tách biệt rõ ràng giữa các thuộc tính trừu tượng của kiểu
dữ liệu và các chi tiết thực thi cụ thể của kiểu dữ liệu đó.
6
Trừu tượng hóa dữ liệu trong
LTHĐT
• Đối tượng trong thực tế phức tạp
• Cần đơn giản hóa, bỏ qua những chi tiết không
cần thiết
• Chỉ “trích rút” lấy những thông tin liên quan,
thông tin quan tâm, quan trọng với bài toán
7
Ví dụ: Điện thoại Nokia
• Những thông tin gì có thể cảm nhận được khi
nhìn các "đối tượng" này?
− Tất cả là điện thoại Nokia
− Các điện thoại này có loại nắp trượt, có loại nắp gập, có
loại dạng bar
− Một số điện thoại là dòng doanh nhân, một số dòng âm
nhạc, 3G…
− Bàn phím loại tiêu chuẩn, QWERTY hoặc không có bàn
phím
− Màu sắc, chất liệu, kích cỡ… khác nhau
− v.v…
8
Ví dụ: Điện thoại Nokia
• Tổ chức là đối tượng điện thoại này vào các đặc
tính chung
− Vẫn còn rất khái quát
9
Ví dụ: Điện thoại Nokia
• Chia thành các danh mục nhỏ hơn
− Ví dụ: Theo chức năng
• Xác định các đặc tính riêng
Người nghe nhạc
quan tâm đến điều gì
Doanh nhân quan
tâm đến điều gì
10
Ví dụ: Điện thoại Nokia
• Quay lại khái quát
11
Ví dụ: Điện thoại Nokia
• Trừu tượng hóa các đối tượng điện thoại Nokia
12
Ví dụ
• Trừu tượng hóa các đối
tượng
Chưa phân loại
Sinh vật – Động vật – Loài người
Sinh vật – Động vật – Động vật nguy hiểm
Lớp và thành phần của lớp
Các khái niệm chung về lớp và các thành
phần của lớp
2
14
Lớp
• Lớp (Class) là cách phân loại (classify) các đối
tượng dựa trên đặc điểm chung của các đối
tượng đó.
• Lớp có thể coi là khuôn mẫu để tạo các đối tượng
− Ví dụ: Người, Sinh Vật, Màu sắc…
• 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
− Một đối tượng gọi là một thể hiện của lớp
15
Các thành phần của lớp
• Lớp đóng gói các phương thức và thuộc tính
chung của các đối tượng cùng một loại
Thuộc tính: các
thông tin liên quan
đến thuộc tính
Phương thức: các
hành vi đối tượng
có thể thực hiện
Class Object MyBook
borrow
countPages
Vu Thi Huong
Giang
250 pages
Thể hiện: Một đối tượng cụ thể
Thuộc tính thể hiện: Những giá trị gán cho các
thuộc tính của một đối tượng cụ thể
Human
computer
interaction
getAuthorName
16
Thuộc tính
• Thuộc tính
− Một thuộc tính của một lớp là một trạng thái chung được
đặt tên của tất cả các thể hiện của lớp đó có thể có
− Ví dụ: Lớp Ô tô có các thuộc tính
+ Màu sắc
+ Vận tốc
• 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
17
Phương thức
• Phương thức
− 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
18
Phạm vi
• Phạm vi nhìn thấy được xác định khả năng nhìn
thấy được của một thành phần của chương trình
với các thành phần khác của chương trình
• Đối với lớp
− Phạm vi nhìn thấy được có thể được áp dụng cho các
thành phần của lớp
+ private: chỉ truy cập được bên trong lớp đó
+ public: có thể truy cập được tại mọi nơi
Xây dựng lớp
Xây dựng các lớp cùng các thuộc tính và
phương thức của nó trong Java
3
20
Gói
• Gói (package) giống như thư mục giúp:
− Tổ chức và xác định vị trí lớp dễ dàng và sử dụng các lớp
một cách phù hợp.
− Tránh cho việc đặt tên lớp bị xung đột (trùng tên)
+ Các package khác nhau có thể chứa các lớp có cùng tên
− Bảo vệ các lớp, dữ liệu và phương thức ở mức rộng hơn
so với mối quan hệ giữa các lớp.
• Một package cũng có thể chứa các package khác
• Còn được gọi là không gian tên (namespace)
trong một số ngôn ngữ lập trình (C/C++…)
21
Gói trong Java
• Java đã xây dựng sẵn một số package
− java.lang
− javax.swing
− java.io
− …
• Có thể tự tạo ra các gói để tổ chức các lớp
− Cú pháp:
package <tên gói>;
22
Gói trong Java
• Tên gói phải được viết trên cùng của file mã
nguồn
• Chỉ được phép có 1 câu khai báo gói trong mỗi
file mã nguồn, và khai báo này sẽ được áp dụng
cho tất cả các dữ liệu trong file đó.
• Một gói có thể được đặt trong một gói khác
− Phân cách bằng dấu .
− Ví dụ package trungtt.oop.k59;
23
Quy ước đặt tên gói
• Tên gói được viết toàn bộ bằng chữ thường để
tránh xung đột với tên lớp hay giao diện
• Đối với các công ty có tên miền Internet: Sử dụng
tên miền đảo để đặt tên gói
− Ví dụ: Một lập trình viên tại công ty example.com sẽ đặt
tên gói là com.example.mypackage
24
Các package trong Java
•java.applet
•java.awt
•java.beans
•java.io
•java.lang
•java.math
•java.net
•java.nio
•java.rmi
•java.security
•java.sql
•java.text
•java.util
•javax.accessibility
•javax.crypto
•javax.imageio
•javax.naming
•javax.net
•javax.print
•javax.rmi
•javax.security
•javax.sound
•javax.sql
•javax.swing
•javax.transaction
•javax.xml
•org.ietf.jgss
•org.omg.CORBA
•org.omg.CosNaming
•org.omg.Dynamic
•org.omg.IOP
•org.omg.Messaging
•org.omg.PortableInterceptor
•org.omg.PortableServer
•org.omg.SendingContext
•org.omg.stub.java.rmi
•org.w3c.dom
•org.xml
25
Các package trong Java
• Các package cơ bản trong Java
− java.lang
+ Cung cấp các lớp cơ bản cho thiết kế ngôn ngữ lập trình Java
+ Bao gồm wrapper classes, String và StringBuffer, Object, ...
+ Import ngầm định vào tất cả các lớp
− java.util
+ Bao gồm tập hợp framework, mô hình sự kiện, date time, và
nhiều tiện ích khác.
− java.io
+ Cung cấp khả năng vào/ra hệ thống với các luồng dữ liệu và
hệ thống file.
26
Các package trong Java
• Các package cơ bản trong Java
− java.math
+ Cung cấp các lớp thực thi các phép toán với số nguyên và các
phép toán thập phân
− java.sql
+ Cung cấp các API cho phép truy nhập và xử lý dữ liệu được
lưu trữ trong một nguồn dữ liệu (thường sử dụng cơ sở dữ
liệu quan hệ)
− javax.swing
+ Cung cấp các lớp và giao diện cho phép tạo ra các ứng dụng
đồ họa.
− …
27
Không gian tên trong C++/C#
− Cú pháp:
namespace <tên namespace>
{
// Khai báo các lớp ở đây
}
− Đối không gian tên nằm trong không gian tên khác
namespace <tên namespace ngoài>
{
namespace <tên namespace trong>
{
// Khai báo các lớp ở đây
}
}
28
Khai báo lớp
• Cú pháp: sử dụng từ khóa class
class <Tên Lớp> {
// Nội dung lớp
}
Ví dụ
class Dog {
// Nội dung lớp
}
• Cú pháp khai báo lớp sử dụng chỉ định truy cập:
accessmodifier class <Tên Lớp> {
// Nội dung lớp
}
29
Khai báo lớp sử dụng
chỉ định truy cập
• Chỉ định truy cập:
+ public: Lớp có thể được truy cập từ bất cứ đâu, kể cả bên
ngoài package chứa lớp đó.
+ private: Lớp chỉ có thể được truy cập trong phạm vi lớp
đó
+ mặc định: Lớp có thể được truy cập từ bên trong package
chứa lớp đó.
public mặc định private
Cùng lớp ✔ ✔ ✔
Cùng gói ✔ ✔ ✘
Khác gói ✔ ✘ ✘
inner class
30
Thuộc tính
• Là các thông tin, trạng thái mà đối tượng của lớp
đó có thể mang
• Các thuộc tính phải được khai báo bên trong lớp
• Mỗi đối tượng có bản sao các thuộc tính của
riêng nó
− Giá trị của một thuộc tính thuộc các đối tượng khác nhau
là khác nhau.
• Bản chất của các thuộc tính là các thành phần dữ
liệu của đối tượng
− Khai báo: tương tự như biến
31
Thuộc tính
• Cú pháp khai báo thuộc tính
accessmodifier kiểu tênThuộcTính;
• Thuộc tính có thể được khởi tạo khi khai
báo
− Các giá trị mặc định sẽ được sử dụng nếu không
được khởi tạo.
32
Phương thức
• Xác định cách một đối tượng đáp ứng lại thông
điệp
− Khai báo: tương tự khai báo hàm
• Phương thức xác định các hoạt động 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 đó
33
Phương thức
• Cú pháp
accessmodifier kiểuTrảVề tênPhươngThức
(ds tham số) {
// Nội dung phương thức
}
34
Chỉ định truy cập
• Chỉ định truy cập cho thành viên của lớp:
+ public: Thuộc tính hoặc phương thức có thể được truy cập
từ bất cứ đâu, kể cả bên ngoài package chứa lớp đó.
+ private: Thuộc tính hoặc phương thức chỉ có thể được truy
cập trong phạm vi lớp đó
+ mặc định: Thuộc tính hoặc phương thức có thể được truy cập
từ bên trong package chứa lớp đó.
public mặc định private
Cùng lớp ✔ ✔ ✔
Cùng gói ✔ ✔ ✘
Khác gói ✔ ✘ ✘
Ví dụ: Lớp BankAccount
package com.megabank.models;
public class BankAccount {
String owner;
double balance;
boolean debit(double amount){
if (amount > balance)
return false;
else {
balance -= amount; return true;
}
}
void credit(double amount){
balance += amount;
}
}
Tạo và sử dụng đối tượng
Khai báo và khởi tạo đối tượng. Truy cập
đến các phương thức và thuộc tính của đối
tượng
4
37
Khai báo và khởi tạo dữ liệu
• Trong Java, mọi dữ liệu cần phải được khai báo và
khởi tạo trước khi sử dụng
• Ví dụ
− Khai báo
int i;
− Khởi tạo
i = 3;
− Hoặc kết hợp khai báo và khởi tạo
int i = 3;
38
Khai báo và khởi tạo dữ liệu
• Trong C++, dữ liệu có thể tự động được khởi tạo
khi khai báo
− Ví dụ: int i;
− Dữ liệu sẽ được khởi tạo với giá trị mặc định của kiểu dữ
liệu tương ứng
• Trong Java, dữ liệu KHÔNG được tự động khởi
tạo khi khai báo
− Ví dụ:
int i;
System.out.println(i); //LỖI
39
Khai báo
• Để khai báo dữ liệu, ta cần phải xác định kiểu của dữ
liệu đó
− Cú pháp: <kiểu> tên biến;
− Ví dụ: int i; // Biến i là kiểu int
• Trong OOP, lớp có thể coi là kiểu dữ liệu trừu tượng
do người dùng định nghĩa và đối tượng chính là biến
của kiểu dữ liệu đó
• Khai báo: tương tự khai báo biến
− Cú pháp: <Tên Lớp> tên đối tượng;
− Ví dụ:
BankAccount acc; // Đối tượng acc là một BankAccount
40
Khởi tạo
• Đối với kiểu dữ liệu nguyên thủy: Dùng toán tử =
− Ví dụ: i = 3;
• Đối với kiểu dữ liệu tham chiếu (1): Khởi tạo bằng
toán tử new
− Ví dụ: acc1 = new BankAccount();
• Nếu không được khởi tạo: đối tượng mang giá trị
null
(1) tương tự con trỏ trong C++
41
Khởi tạo
• Khi đối tượng được khởi tạo, các thành phần dữ
liệu (thuộc tính) của đối tượng được khởi tạo với
giá trị mặc định của kiểu dữ liệu tương ứng
− number data type  0;
− reference type  null
− boolean  false
42
Kết hợp khai báo và khởi tạo dữ
liệu
• Có thể kết hợp khai báo và khởi tạo dữ liệu
− Cú pháp:
<Tên Lớp> tên đối tượng = new <Tên Lớp>();
− Ví dụ
BankAccount acc = new BankAccount();
43
Truy cập đến phương thức và
thuộc tính của đối tượng
• Sử dụng toán tử .
• Không cần thiết nếu truy cập từ trong cùng một
lớp
44
Tự tham chiếu
• Sử dụng từ khóa this
• Cho phép truy cập vào đối tượng hiện tại của lớp.
• Quan trọng khi hàm/phương thức thành phần
thao tác trên hai hay nhiều đối tượng.
• Xóa đi sự nhập nhằng giữa một biến cục bộ,
tham số với thành phần dữ liệu của lớp
• Không dùng bên trong các khối lệnh static
45
Ví dụ: từ khóa this
public class Account {
// instance variable
String owner; // Account name
long balance; // Balance
//...
// value setting method
void setAccountInfo(String owner, long balance) {
this.owner = owner;
this.balance = balance;
}
//...
}
46
Ví dụ:
Khởi tạo đối tượng
Account object of Mrs. Giang
Account object of Mr. Tuan
owner: Vu Thi Huong Giang
balance: 2.000.000 VND
owner
balance
Variable declaration
Class Account
owner: Nguyen Manh Tuan
balance: 1.000.000 VND
47
Ví dụ:
Truy cập đến các thuộc tính
Account object of Ms. Giang
Account object of Mr. Tuan
owner: Vu Thi Huong Giang
balance: 2.000.000 VND
owner: Nguyen Manh Tuan
balance: 1.000.000 VND
public class Account {
String name; //Account name
long balance; //Balance
void display(){
System.out.println(…);
}
void deposit (long money){
balance += money;
}
}
Account acc1 = new Account();
acc1.name = “Vu T Huong Giang”;
acc1.balance = “2000000”;
Account acc2 = new Account();
acc2.name = “Nguyen Manh Tuan”;
acc2.balance = “1000000”;
48
Ví dụ:
Truy cập đến các phương thức
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);
obj (Caller)
Account object
owner: Vu Thi Huong Giang
balance: 2.000.000 VND
interest 0.05f 0.04f 0.03f
49
Ví dụ
String result;
result = javax.swing.JOptionPane.showInputDialog("Hay nhap ten ban:");
javax.swing.JOptionPane.showMessageDialog(null, "Xin chao " + result + "!");
Ví dụ
import javax.swing.JOptionPane;
String result;
result = JOptionPane.showInputDialog("Hay nhap ten ban:");
JOptionPane.showMessageDialog(null, "Xin chao " + result + "!");
Tham chiếu đến lớp khác gói
• Đối với lớp trong cùng một gói: chỉ cần tên lớp
− Ví dụ: BankAccount
• Đối với lớp khác gói: phải cung cấp đầy đủ tên
lớp và tên gói
− Ví dụ trong Java: oop.trungtt.k59.BankAccount
• Sử dụng lệnh import để khai báo các package
hoặc các lớp để khi sử dụng không cần nêu tên
đầy đủ.
hoặc import javax.swing.*;
để import tất cả các lớp trong gói
50
Đối tượng trong C++
• Trong C++, có 2 cách sử dụng đối tượng
− Khởi tạo đối tượng truyền thống
BankAccount acc;
acc.deposit(1000000);
− Con trỏ đối tượng  tương tự đối tượng trong Java
BankAccount *acc = new BankAccount();
acc->deposit(1000000);
Thành viên hằng &
thành viên tĩnh
final, static
5
52
Thành viên tĩnh
• Trong lập trình cấu trúc: Các biến địa phương khai
báo cục bộ trong hàm:
− Trong trường hợp các biến địa phương không khai báo là
biến static thì mỗi lần gọi hàm chương trình dịch lại đăng
ký tạo ra biến mới
− Khi chúng ta khai báo các biến địa phương là các biến
static thì chương trình dịch sẽ chỉ khởi tạo duy nhất một
lần (ở lần gọi đầu tiên) biến địa phương này và thông
qua con trỏ stack ở những lần gọi sau chi tham chiếu tới
biến đã tạo ra này để sử dụng lại chúng mà không tạo ra
biến mới
− Tạo một lần/tham chiếu nhiều lần/lưu giá trị của lần
tham chiếu trước
53
Biến địa phương static
Biến địa phương static:
void f()
{ static int x=0;
x++;
}
Lần gọi 1: f()
Lần gọi 2: f()
Biến địa phương không static
void f()
{ int x=0;
x++;
}
Lần gọi 1: f()
Lần gọi 2: f()
0
1
0
0
54
Thành viên tĩnh trong OOP
• Trong lập trình hướng đối tượng
− Các thành viên bình thường là thành viên thuộc về đối
tượng
− Các thành viên tĩnh (static) là các thành viên thuộc về lớp
• Cú pháp khai báo thành viên static:
<chỉ định truy cập> static <kiểu> tên biến;
55
Thuộc tính static
• Là thuộc tính mang thông tin chung của một lớp
• Thay đổi giá trị của một thành viên static trong
một đối tượng của lớp sẽ thay đổi giá trị của
thành viên này của tất cả các đối tượng khác của
lớp đó.
Ví dụ
class TestStatic{
public static int iStatic;
public int iNonStatic;
}
public class TestS {
public static void main(String[] args) {
TestStatic obj1 = new TestStatic();
obj1.iStatic = 10; obj1.iNonStatic = 11;
System.out.println(obj1.iStatic + ”,”
+obj1.iNonStatic);
TestStatic obj2 = new TestStatic();
System.out.println(obj2.iStatic + ”,”
+ obj2.iNonStatic);
obj2.iStatic = 12;
System.out.println(obj1.iStatic + ”,”
+ obj1.iNonStatic);
}
}
57
Phương thức static
• Các phương thức không tương tác với các "thể
hiện" của lớp
• Các phương thức "tiện ích", không cần thiết phải
khởi tạo đối tượng để sử dụng
• Các phương thức static chỉ có thể truy cập vào
các thuộc tính static và chỉ có thể gọi các phương
thức static trong cùng lớp
Ví dụ
class MyUtils {
public static double mean(int[] p) {
int sum = 0;
for (int i=0; i<p.length; i++) {
sum += p[i];
}
return ((double)sum) / p.length;
}
}
// Gọi phương thức tĩnh bên trong lớp
double avgAtt = mean(attendance);
// Gọi phương thức tĩnh bên ngoài lớp
double avgAtt = MyUtils.mean(attendance);
Phương thức mean có thể không phải
khai báo static tuy nhiên muốn gọi nó
phải thông qua một đối tượng
59
Thành viên lớp và
thành viên đối tượng
Thành viên đối tượng
• Thuộc tính/phương
thức chỉ được truy cập
thông qua đối tượng
• Mỗi đối tượng có 1 bản
sao riêng của 1 thuộc
tính đối tượng
• Giá trị của 1 thuộc tính
đối tượng của các đối
tượng khác nhau là
khác nhau.
Thành viên lớp (static)
• Thuộc tính/phương
thức có thể được truy
cập thông qua lớp
• Các đối tượng có chung
1 bản sao của 1 thuộc
tính lớp
• Giá trị của 1 thuộc tính
lớp của các đối
tượngkhác nhau là
giống nhau.
Ví dụ
• Lớp JOptionPane trong
javax.swing
• Thuộc tính
• Phương thức
Ví dụ
JOptionPane.showMessageDialog(null,
"Ban da thao tac loi", "Thong bao loi",
JOptionPane.ERROR_MESSAGE);
JOptionPane.showConfirmDialog(null,
"Ban co chac chan muon thoat?",
"Hay lua chon", OptionPane.YES_NO_OPTION);
Ví dụ
Object[] options = { "OK", "CANCEL" };
JOptionPane.showOptionDialog(null,
“Nhan OK de tiep tuc", "Canh bao",
JOptionPane.DEFAULT_OPTION,
JOptionPane.WARNING_MESSAGE,
null,options,options[0]);
63
Thành viên hằng
• Một thuộc tính/phương thức không thể thay đổi giá
trị/nội dung trong quá trình sử dụng.
• Cú pháp khai báo: Sử dụng từ khóa final
<chỉ định truy cập> final <kiểu> tên hằng = giá trị;
• Ví dụ:
final double PI = 3.141592653589793;
public final int VAL_THREE = 39;
private final int[] A = { 1, 2, 3, 4, 5, 6 };
64
Thành viên hằng & tĩnh
Thông thường các hằng số liên quan đến lớp được
khai báo là static final
• Tương đương với const trong C++
Biểu đồ lớp
Biểu diễn lớp trong UML
6
66
Biểu đồ lớp
• Lớp (class) được biểu
diễn bằng 1 hình chữ
nhật với 3 thành
phần:
• Tên lớp
• Cấu trúc (thuộc tính)
• Hành vi (phương thức)
Professor
- name
- employeeID : UniqueId
- hireDate
- status
- discipline
- maxLoad
+ submitFinalGrade()
+ acceptCourseOffering()
+ setMaxLoad()
+ takeSabbatical()
+ teachClass()
67
Chỉ định truy cập
• Trong biểu đồ lớp, dấu –
được sử dụng để thể hiện
chỉ định truy cập private
• Dấu + được sử dụng để
thể hiện chỉ định truy cập
public
Professor
- name
- employeeID : UniqueId
- hireDate
- status
- discipline
- maxLoad
+ submitFinalGrade()
+ acceptCourseOffering()
+ setMaxLoad()
+ takeSabbatical()
+ teachClass()
68
Giá trị tĩnh
• Giá trị tĩnh: Thể hiện bằng dấu gạch chân
Student
- name
- address
- nextAvailID : int
+ addSchedule ([in] theSchedule : Schedule, [in] forSemester : Semester)
+ getSchedule ([in] forSemester : Semester) : Schedule
+ hasPrerequisites ([in] forCourseOffering : CourseOffering) : boolean
# passed ([in] theCourseOffering : CourseOffering) : boolean
+ getNextAvailID () : int
- studentID
69
Lớp và đối tượng trong UML
Class
Objects
Student
- name
- address
- studentID
- dateOfBirth
:Student
- name = “M. Modano”
- address = “123 Main St.”
- studentID = 9
- dateOfBirth = “03/10/1967”
sv2:Student
- name = “D. Hatcher”
- address = “456 Oak Ln.”
- studentID = 2
- dateOfBirth = “12/11/1969”
70
Ví dụ
• Lớp BankAccount
• Lớp Student
BankAccount
- owner: String
- balance: double
+ debit(double): boolean
+ credit(double)
Student
- name
- address
- studentID
- dateOfBirth
Thank you!
Any questions?

Mais conteúdo relacionado

Mais procurados

Oop unit 09 lập trình tổng quát
Oop unit 09 lập trình tổng quátOop unit 09 lập trình tổng quát
Oop unit 09 lập trình tổng quátTráng Hà Viết
 
Oop unit 11 input và output
Oop unit 11 input và outputOop unit 11 input và output
Oop unit 11 input và outputTráng Hà Viết
 
Oop unit 13 tổng quan về uml
Oop unit 13 tổng quan về umlOop unit 13 tổng quan về uml
Oop unit 13 tổng quan về umlTráng Hà Viết
 
Oop unit 12 đồ họa và xử lý sự kiện
Oop unit 12 đồ họa và xử lý sự kiệnOop unit 12 đồ họa và xử lý sự kiện
Oop unit 12 đồ họa và xử lý sự kiệnTráng Hà Viết
 
Bai04 tao vasudungdoituong
Bai04 tao vasudungdoituongBai04 tao vasudungdoituong
Bai04 tao vasudungdoituongNhuận Lê Văn
 
[Cntt] bài giảng lập trình java bkhcm
[Cntt] bài giảng lập trình java   bkhcm[Cntt] bài giảng lập trình java   bkhcm
[Cntt] bài giảng lập trình java bkhcmHong Phuoc Nguyen
 
Lập Trình Hướng Đối Tượng trong Java ( Vietnamese )
Lập Trình Hướng Đối Tượng trong Java ( Vietnamese )Lập Trình Hướng Đối Tượng trong Java ( Vietnamese )
Lập Trình Hướng Đối Tượng trong Java ( Vietnamese )Đông Lương
 
Bài 2: Lập trình hướng đối tượng (OOP) - Giáo trình FPT
Bài 2: Lập trình hướng đối tượng (OOP) - Giáo trình FPTBài 2: Lập trình hướng đối tượng (OOP) - Giáo trình FPT
Bài 2: Lập trình hướng đối tượng (OOP) - Giáo trình FPTMasterCode.vn
 
Bài 8 - Collection Generics - Nền tảng lập trình ứng dụng với C#
Bài 8 - Collection Generics - Nền tảng lập trình ứng dụng với C#Bài 8 - Collection Generics - Nền tảng lập trình ứng dụng với C#
Bài 8 - Collection Generics - Nền tảng lập trình ứng dụng với C#MasterCode.vn
 
[Cntt] bài giảng java khtn hcm
[Cntt] bài giảng java   khtn hcm[Cntt] bài giảng java   khtn hcm
[Cntt] bài giảng java khtn hcmHong Phuoc Nguyen
 
Bai06 mot sokythuattrongkethua
Bai06 mot sokythuattrongkethuaBai06 mot sokythuattrongkethua
Bai06 mot sokythuattrongkethuaNhuận Lê Văn
 

Mais procurados (20)

Oop unit 09 lập trình tổng quát
Oop unit 09 lập trình tổng quátOop unit 09 lập trình tổng quát
Oop unit 09 lập trình tổng quát
 
Oop unit 11 input và output
Oop unit 11 input và outputOop unit 11 input và output
Oop unit 11 input và output
 
Oop unit 13 tổng quan về uml
Oop unit 13 tổng quan về umlOop unit 13 tổng quan về uml
Oop unit 13 tổng quan về uml
 
Bai05 ket tapvakethua
Bai05 ket tapvakethuaBai05 ket tapvakethua
Bai05 ket tapvakethua
 
Oop unit 12 đồ họa và xử lý sự kiện
Oop unit 12 đồ họa và xử lý sự kiệnOop unit 12 đồ họa và xử lý sự kiện
Oop unit 12 đồ họa và xử lý sự kiện
 
Bai07 da hinh
Bai07 da hinhBai07 da hinh
Bai07 da hinh
 
Bai04 tao vasudungdoituong
Bai04 tao vasudungdoituongBai04 tao vasudungdoituong
Bai04 tao vasudungdoituong
 
Bai08 lap trinhtongquat
Bai08 lap trinhtongquatBai08 lap trinhtongquat
Bai08 lap trinhtongquat
 
[Cntt] bài giảng lập trình java bkhcm
[Cntt] bài giảng lập trình java   bkhcm[Cntt] bài giảng lập trình java   bkhcm
[Cntt] bài giảng lập trình java bkhcm
 
Bai03 xay dunglop
Bai03 xay dunglopBai03 xay dunglop
Bai03 xay dunglop
 
Lập Trình Hướng Đối Tượng trong Java ( Vietnamese )
Lập Trình Hướng Đối Tượng trong Java ( Vietnamese )Lập Trình Hướng Đối Tượng trong Java ( Vietnamese )
Lập Trình Hướng Đối Tượng trong Java ( Vietnamese )
 
Bai11 ooad bieu_dolop
Bai11 ooad bieu_dolopBai11 ooad bieu_dolop
Bai11 ooad bieu_dolop
 
Bai02 java introduction
Bai02 java introductionBai02 java introduction
Bai02 java introduction
 
Bài 2: Lập trình hướng đối tượng (OOP) - Giáo trình FPT
Bài 2: Lập trình hướng đối tượng (OOP) - Giáo trình FPTBài 2: Lập trình hướng đối tượng (OOP) - Giáo trình FPT
Bài 2: Lập trình hướng đối tượng (OOP) - Giáo trình FPT
 
Bai01 oop overview
Bai01 oop overviewBai01 oop overview
Bai01 oop overview
 
Bài 8 - Collection Generics - Nền tảng lập trình ứng dụng với C#
Bài 8 - Collection Generics - Nền tảng lập trình ứng dụng với C#Bài 8 - Collection Generics - Nền tảng lập trình ứng dụng với C#
Bài 8 - Collection Generics - Nền tảng lập trình ứng dụng với C#
 
[Cntt] bài giảng java khtn hcm
[Cntt] bài giảng java   khtn hcm[Cntt] bài giảng java   khtn hcm
[Cntt] bài giảng java khtn hcm
 
[Cntt] all java
[Cntt] all java[Cntt] all java
[Cntt] all java
 
Bai06 mot sokythuattrongkethua
Bai06 mot sokythuattrongkethuaBai06 mot sokythuattrongkethua
Bai06 mot sokythuattrongkethua
 
Bai08 10 java_fx
Bai08 10 java_fxBai08 10 java_fx
Bai08 10 java_fx
 

Destaque

Project/Problem Based Learning Unit (audia marisol)
Project/Problem Based Learning Unit (audia marisol)Project/Problem Based Learning Unit (audia marisol)
Project/Problem Based Learning Unit (audia marisol)Marisol Audia
 
Delight 2016 part2
Delight 2016 part2Delight 2016 part2
Delight 2016 part2x-mss
 
Artificial intelligence ai l2-tac tu
Artificial intelligence ai l2-tac tuArtificial intelligence ai l2-tac tu
Artificial intelligence ai l2-tac tuTráng Hà Viết
 
SIJS and SAPCRS Autosaved update 072416
SIJS and SAPCRS Autosaved update 072416SIJS and SAPCRS Autosaved update 072416
SIJS and SAPCRS Autosaved update 072416Karon Washburn Rowden
 
192288900311
192288900311192288900311
192288900311x-mss
 
Impedimento ou renúncia eleições
Impedimento ou renúncia   eleiçõesImpedimento ou renúncia   eleições
Impedimento ou renúncia eleiçõesTiago Barros
 
Erfolgreiche Strategien der Unternehmen 
für mehr Frauen in Karrieren
Erfolgreiche Strategien der Unternehmen 
für mehr Frauen in KarrierenErfolgreiche Strategien der Unternehmen 
für mehr Frauen in Karrieren
Erfolgreiche Strategien der Unternehmen 
für mehr Frauen in KarrierenBarbara Lutz
 

Destaque (13)

Project/Problem Based Learning Unit (audia marisol)
Project/Problem Based Learning Unit (audia marisol)Project/Problem Based Learning Unit (audia marisol)
Project/Problem Based Learning Unit (audia marisol)
 
IBA AR1213 AccPDF
IBA AR1213 AccPDFIBA AR1213 AccPDF
IBA AR1213 AccPDF
 
Uniforme moderno
Uniforme modernoUniforme moderno
Uniforme moderno
 
GESCO Presentation 22 Dec 2016
GESCO Presentation 22 Dec 2016GESCO Presentation 22 Dec 2016
GESCO Presentation 22 Dec 2016
 
Delight 2016 part2
Delight 2016 part2Delight 2016 part2
Delight 2016 part2
 
Hvrsports news
Hvrsports  newsHvrsports  news
Hvrsports news
 
Artificial intelligence ai l2-tac tu
Artificial intelligence ai l2-tac tuArtificial intelligence ai l2-tac tu
Artificial intelligence ai l2-tac tu
 
SIJS and SAPCRS Autosaved update 072416
SIJS and SAPCRS Autosaved update 072416SIJS and SAPCRS Autosaved update 072416
SIJS and SAPCRS Autosaved update 072416
 
192288900311
192288900311192288900311
192288900311
 
Chris mcbrown 2016
Chris mcbrown 2016Chris mcbrown 2016
Chris mcbrown 2016
 
Impedimento ou renúncia eleições
Impedimento ou renúncia   eleiçõesImpedimento ou renúncia   eleições
Impedimento ou renúncia eleições
 
Erfolgreiche Strategien der Unternehmen 
für mehr Frauen in Karrieren
Erfolgreiche Strategien der Unternehmen 
für mehr Frauen in KarrierenErfolgreiche Strategien der Unternehmen 
für mehr Frauen in Karrieren
Erfolgreiche Strategien der Unternehmen 
für mehr Frauen in Karrieren
 
HKA Resume July 15
HKA Resume July 15HKA Resume July 15
HKA Resume July 15
 

Semelhante a Oop unit 03 xây dựng lớp

Lesson 06 : OOP and Access modifier
Lesson 06 : OOP and Access modifierLesson 06 : OOP and Access modifier
Lesson 06 : OOP and Access modifierHallo Patidu
 
Bai1_GioiThieuOOP.pptx
Bai1_GioiThieuOOP.pptxBai1_GioiThieuOOP.pptx
Bai1_GioiThieuOOP.pptxHLan34
 
Class và object (lớp và đối tượng
Class và object (lớp và đối tượngClass và object (lớp và đối tượng
Class và object (lớp và đối tượngSon Nguyen
 
LTJAVA_TV_Slides.ppt
LTJAVA_TV_Slides.pptLTJAVA_TV_Slides.ppt
LTJAVA_TV_Slides.pptssuserf603dc1
 
Lappj trình hướng đối tượng
Lappj trình hướng đối tượngLappj trình hướng đối tượng
Lappj trình hướng đối tượngHưởng Nguyễn
 
Ky thuat l.trinh_java
Ky thuat l.trinh_javaKy thuat l.trinh_java
Ky thuat l.trinh_javaLam Man
 
Chuong 03-lop-kieudulieutruutuong
Chuong 03-lop-kieudulieutruutuongChuong 03-lop-kieudulieutruutuong
Chuong 03-lop-kieudulieutruutuongbarrister90
 
Python Beginner Class day-10-class
Python Beginner Class day-10-classPython Beginner Class day-10-class
Python Beginner Class day-10-classKhánh Nguyễn
 
Tài liệu Lập trình Zend Framework 2.x
Tài liệu Lập trình Zend Framework 2.xTài liệu Lập trình Zend Framework 2.x
Tài liệu Lập trình Zend Framework 2.xZendVN
 
Chuong9 lop vadoituong
Chuong9 lop vadoituongChuong9 lop vadoituong
Chuong9 lop vadoituongMinh Ngoc Tran
 
Lap trinh huong_doi_tuong_cpp_dhct_lesson06
Lap trinh huong_doi_tuong_cpp_dhct_lesson06Lap trinh huong_doi_tuong_cpp_dhct_lesson06
Lap trinh huong_doi_tuong_cpp_dhct_lesson06xcode_esvn
 
Ket tap, ke thua
Ket tap, ke thuaKet tap, ke thua
Ket tap, ke thuaTuan Do
 
Bài 4 - Classes, objects và namespaces - Nền tảng lập trình ứng dụng với C#
Bài 4 - Classes, objects và namespaces - Nền tảng lập trình ứng dụng với C#Bài 4 - Classes, objects và namespaces - Nền tảng lập trình ứng dụng với C#
Bài 4 - Classes, objects và namespaces - Nền tảng lập trình ứng dụng với C#MasterCode.vn
 
Bai4classesobjectsnamespaces 130622090259-phpapp02
Bai4classesobjectsnamespaces 130622090259-phpapp02Bai4classesobjectsnamespaces 130622090259-phpapp02
Bai4classesobjectsnamespaces 130622090259-phpapp02Hoàng Hà
 
DCCTK45_Lập Trình HĐT.pdf
DCCTK45_Lập Trình HĐT.pdfDCCTK45_Lập Trình HĐT.pdf
DCCTK45_Lập Trình HĐT.pdftrucmt2000
 
OOP Review - Ôn tập Hướng Đối Tượng
OOP Review - Ôn tập Hướng Đối TượngOOP Review - Ôn tập Hướng Đối Tượng
OOP Review - Ôn tập Hướng Đối TượngNguyễn Quang Thiện
 
Core java 4
Core java 4Core java 4
Core java 4. .
 
Print_to_OOP.pdf
Print_to_OOP.pdfPrint_to_OOP.pdf
Print_to_OOP.pdfcLong52
 

Semelhante a Oop unit 03 xây dựng lớp (20)

Lesson 06 : OOP and Access modifier
Lesson 06 : OOP and Access modifierLesson 06 : OOP and Access modifier
Lesson 06 : OOP and Access modifier
 
Bai1_GioiThieuOOP.pptx
Bai1_GioiThieuOOP.pptxBai1_GioiThieuOOP.pptx
Bai1_GioiThieuOOP.pptx
 
Class và object (lớp và đối tượng
Class và object (lớp và đối tượngClass và object (lớp và đối tượng
Class và object (lớp và đối tượng
 
LTJAVA_TV_Slides.ppt
LTJAVA_TV_Slides.pptLTJAVA_TV_Slides.ppt
LTJAVA_TV_Slides.ppt
 
Lappj trình hướng đối tượng
Lappj trình hướng đối tượngLappj trình hướng đối tượng
Lappj trình hướng đối tượng
 
Ky thuat l.trinh_java
Ky thuat l.trinh_javaKy thuat l.trinh_java
Ky thuat l.trinh_java
 
Chuong 03-lop-kieudulieutruutuong
Chuong 03-lop-kieudulieutruutuongChuong 03-lop-kieudulieutruutuong
Chuong 03-lop-kieudulieutruutuong
 
Python Beginner Class day-10-class
Python Beginner Class day-10-classPython Beginner Class day-10-class
Python Beginner Class day-10-class
 
Ch4.phan tich(1)
Ch4.phan tich(1)Ch4.phan tich(1)
Ch4.phan tich(1)
 
lopvadoituong.pdf
lopvadoituong.pdflopvadoituong.pdf
lopvadoituong.pdf
 
Tài liệu Lập trình Zend Framework 2.x
Tài liệu Lập trình Zend Framework 2.xTài liệu Lập trình Zend Framework 2.x
Tài liệu Lập trình Zend Framework 2.x
 
Chuong9 lop vadoituong
Chuong9 lop vadoituongChuong9 lop vadoituong
Chuong9 lop vadoituong
 
Lap trinh huong_doi_tuong_cpp_dhct_lesson06
Lap trinh huong_doi_tuong_cpp_dhct_lesson06Lap trinh huong_doi_tuong_cpp_dhct_lesson06
Lap trinh huong_doi_tuong_cpp_dhct_lesson06
 
Ket tap, ke thua
Ket tap, ke thuaKet tap, ke thua
Ket tap, ke thua
 
Bài 4 - Classes, objects và namespaces - Nền tảng lập trình ứng dụng với C#
Bài 4 - Classes, objects và namespaces - Nền tảng lập trình ứng dụng với C#Bài 4 - Classes, objects và namespaces - Nền tảng lập trình ứng dụng với C#
Bài 4 - Classes, objects và namespaces - Nền tảng lập trình ứng dụng với C#
 
Bai4classesobjectsnamespaces 130622090259-phpapp02
Bai4classesobjectsnamespaces 130622090259-phpapp02Bai4classesobjectsnamespaces 130622090259-phpapp02
Bai4classesobjectsnamespaces 130622090259-phpapp02
 
DCCTK45_Lập Trình HĐT.pdf
DCCTK45_Lập Trình HĐT.pdfDCCTK45_Lập Trình HĐT.pdf
DCCTK45_Lập Trình HĐT.pdf
 
OOP Review - Ôn tập Hướng Đối Tượng
OOP Review - Ôn tập Hướng Đối TượngOOP Review - Ôn tập Hướng Đối Tượng
OOP Review - Ôn tập Hướng Đối Tượng
 
Core java 4
Core java 4Core java 4
Core java 4
 
Print_to_OOP.pdf
Print_to_OOP.pdfPrint_to_OOP.pdf
Print_to_OOP.pdf
 

Mais de Tráng Hà Viết

Tài liệu môn trí tuệ nhân tạo đh bách khoa tp hồ chí minh tài liệu, ebook
Tài liệu môn trí tuệ nhân tạo đh bách khoa tp hồ chí minh   tài liệu, ebookTài liệu môn trí tuệ nhân tạo đh bách khoa tp hồ chí minh   tài liệu, ebook
Tài liệu môn trí tuệ nhân tạo đh bách khoa tp hồ chí minh tài liệu, ebookTráng Hà Viết
 
Artificial intelligence ai l1-gioi thieu
Artificial intelligence ai l1-gioi thieuArtificial intelligence ai l1-gioi thieu
Artificial intelligence ai l1-gioi thieuTráng Hà Viết
 
Artificial intelligence ai gioi thieu-mon_hoc_it4040
Artificial intelligence ai gioi thieu-mon_hoc_it4040Artificial intelligence ai gioi thieu-mon_hoc_it4040
Artificial intelligence ai gioi thieu-mon_hoc_it4040Tráng Hà Viết
 
Artificial intelligence ai l5-thoa man-rang_buoc
Artificial intelligence ai l5-thoa man-rang_buocArtificial intelligence ai l5-thoa man-rang_buoc
Artificial intelligence ai l5-thoa man-rang_buocTráng Hà Viết
 
Artificial intelligence ai l6-logic va-suy_dien
Artificial intelligence ai l6-logic va-suy_dienArtificial intelligence ai l6-logic va-suy_dien
Artificial intelligence ai l6-logic va-suy_dienTráng Hà Viết
 
Artificial intelligence ai l4-tim kiem-heuristic
Artificial intelligence ai l4-tim kiem-heuristicArtificial intelligence ai l4-tim kiem-heuristic
Artificial intelligence ai l4-tim kiem-heuristicTráng Hà Viết
 
Artificial intelligence ai l7-bieu dien-tri_thuc
Artificial intelligence ai l7-bieu dien-tri_thucArtificial intelligence ai l7-bieu dien-tri_thuc
Artificial intelligence ai l7-bieu dien-tri_thucTráng Hà Viết
 
Artificial intelligence ai l9-hoc may
Artificial intelligence ai l9-hoc mayArtificial intelligence ai l9-hoc may
Artificial intelligence ai l9-hoc mayTráng Hà Viết
 
Artificial intelligence ai l3-tim kiem-co_ban
Artificial intelligence ai l3-tim kiem-co_banArtificial intelligence ai l3-tim kiem-co_ban
Artificial intelligence ai l3-tim kiem-co_banTráng Hà Viết
 
Công cụ mã nguồn mở BlueFish
Công cụ mã nguồn mở BlueFishCông cụ mã nguồn mở BlueFish
Công cụ mã nguồn mở BlueFishTráng Hà Viết
 

Mais de Tráng Hà Viết (10)

Tài liệu môn trí tuệ nhân tạo đh bách khoa tp hồ chí minh tài liệu, ebook
Tài liệu môn trí tuệ nhân tạo đh bách khoa tp hồ chí minh   tài liệu, ebookTài liệu môn trí tuệ nhân tạo đh bách khoa tp hồ chí minh   tài liệu, ebook
Tài liệu môn trí tuệ nhân tạo đh bách khoa tp hồ chí minh tài liệu, ebook
 
Artificial intelligence ai l1-gioi thieu
Artificial intelligence ai l1-gioi thieuArtificial intelligence ai l1-gioi thieu
Artificial intelligence ai l1-gioi thieu
 
Artificial intelligence ai gioi thieu-mon_hoc_it4040
Artificial intelligence ai gioi thieu-mon_hoc_it4040Artificial intelligence ai gioi thieu-mon_hoc_it4040
Artificial intelligence ai gioi thieu-mon_hoc_it4040
 
Artificial intelligence ai l5-thoa man-rang_buoc
Artificial intelligence ai l5-thoa man-rang_buocArtificial intelligence ai l5-thoa man-rang_buoc
Artificial intelligence ai l5-thoa man-rang_buoc
 
Artificial intelligence ai l6-logic va-suy_dien
Artificial intelligence ai l6-logic va-suy_dienArtificial intelligence ai l6-logic va-suy_dien
Artificial intelligence ai l6-logic va-suy_dien
 
Artificial intelligence ai l4-tim kiem-heuristic
Artificial intelligence ai l4-tim kiem-heuristicArtificial intelligence ai l4-tim kiem-heuristic
Artificial intelligence ai l4-tim kiem-heuristic
 
Artificial intelligence ai l7-bieu dien-tri_thuc
Artificial intelligence ai l7-bieu dien-tri_thucArtificial intelligence ai l7-bieu dien-tri_thuc
Artificial intelligence ai l7-bieu dien-tri_thuc
 
Artificial intelligence ai l9-hoc may
Artificial intelligence ai l9-hoc mayArtificial intelligence ai l9-hoc may
Artificial intelligence ai l9-hoc may
 
Artificial intelligence ai l3-tim kiem-co_ban
Artificial intelligence ai l3-tim kiem-co_banArtificial intelligence ai l3-tim kiem-co_ban
Artificial intelligence ai l3-tim kiem-co_ban
 
Công cụ mã nguồn mở BlueFish
Công cụ mã nguồn mở BlueFishCông cụ mã nguồn mở BlueFish
Công cụ mã nguồn mở BlueFish
 

Último

ĐỀ CƯƠNG + TEST ÔN TẬP CUỐI KÌ 2 TIẾNG ANH 11 - GLOBAL SUCCESS (THEO CHUẨN MI...
ĐỀ CƯƠNG + TEST ÔN TẬP CUỐI KÌ 2 TIẾNG ANH 11 - GLOBAL SUCCESS (THEO CHUẨN MI...ĐỀ CƯƠNG + TEST ÔN TẬP CUỐI KÌ 2 TIẾNG ANH 11 - GLOBAL SUCCESS (THEO CHUẨN MI...
ĐỀ CƯƠNG + TEST ÔN TẬP CUỐI KÌ 2 TIẾNG ANH 11 - GLOBAL SUCCESS (THEO CHUẨN MI...Nguyen Thanh Tu Collection
 
.................KHTN 9....................................Viet Nam.......
.................KHTN 9....................................Viet Nam........................KHTN 9....................................Viet Nam.......
.................KHTN 9....................................Viet Nam.......thoa051989
 
ĐỀ CƯƠNG + TEST ÔN TẬP CUỐI KÌ 2 TIẾNG ANH 11 - GLOBAL SUCCESS (THEO CHUẨN MI...
ĐỀ CƯƠNG + TEST ÔN TẬP CUỐI KÌ 2 TIẾNG ANH 11 - GLOBAL SUCCESS (THEO CHUẨN MI...ĐỀ CƯƠNG + TEST ÔN TẬP CUỐI KÌ 2 TIẾNG ANH 11 - GLOBAL SUCCESS (THEO CHUẨN MI...
ĐỀ CƯƠNG + TEST ÔN TẬP CUỐI KÌ 2 TIẾNG ANH 11 - GLOBAL SUCCESS (THEO CHUẨN MI...Nguyen Thanh Tu Collection
 
Lập lá số tử vi trọn đời có luận giải chi tiết, chính xác n...
Lập lá số tử vi trọn đời có luận giải chi tiết, chính xác n...Lập lá số tử vi trọn đời có luận giải chi tiết, chính xác n...
Lập lá số tử vi trọn đời có luận giải chi tiết, chính xác n...Xem Số Mệnh
 
ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA GIỮA HỌC KÌ + CUỐI HỌC KÌ 2 NĂ...
ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA GIỮA HỌC KÌ + CUỐI HỌC KÌ 2 NĂ...ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA GIỮA HỌC KÌ + CUỐI HỌC KÌ 2 NĂ...
ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA GIỮA HỌC KÌ + CUỐI HỌC KÌ 2 NĂ...Nguyen Thanh Tu Collection
 
ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA CUỐI HỌC KÌ 2 NĂM HỌC 2023-202...
ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA CUỐI HỌC KÌ 2 NĂM HỌC 2023-202...ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA CUỐI HỌC KÌ 2 NĂM HỌC 2023-202...
ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA CUỐI HỌC KÌ 2 NĂM HỌC 2023-202...Nguyen Thanh Tu Collection
 
vat li 10 Chuyen de bai 4 Xac dinh phuong huong.pptx
vat li 10  Chuyen de bai 4 Xac dinh phuong huong.pptxvat li 10  Chuyen de bai 4 Xac dinh phuong huong.pptx
vat li 10 Chuyen de bai 4 Xac dinh phuong huong.pptxlephuongvu2019
 
TƯ TƯỞNG HỒ CHÍ MINH VỀ NHÀ NƯỚC CỦA NHÂN DÂN, DO NHÂN DÂN, VÌ NHÂN DÂN VÀ VẬ...
TƯ TƯỞNG HỒ CHÍ MINH VỀ NHÀ NƯỚC CỦA NHÂN DÂN, DO NHÂN DÂN, VÌ NHÂN DÂN VÀ VẬ...TƯ TƯỞNG HỒ CHÍ MINH VỀ NHÀ NƯỚC CỦA NHÂN DÂN, DO NHÂN DÂN, VÌ NHÂN DÂN VÀ VẬ...
TƯ TƯỞNG HỒ CHÍ MINH VỀ NHÀ NƯỚC CỦA NHÂN DÂN, DO NHÂN DÂN, VÌ NHÂN DÂN VÀ VẬ...cogiahuy36
 
1第一课:你好.pptx. Chinese lesson 1: Hello.Nỉ hao
1第一课:你好.pptx. Chinese lesson 1: Hello.Nỉ hao1第一课:你好.pptx. Chinese lesson 1: Hello.Nỉ hao
1第一课:你好.pptx. Chinese lesson 1: Hello.Nỉ haoBookoTime
 
Giáo trình xã hội học Thể dục Thể thao hay
Giáo trình xã hội học Thể dục Thể thao hayGiáo trình xã hội học Thể dục Thể thao hay
Giáo trình xã hội học Thể dục Thể thao hayLcTh15
 
BỘ ĐỀ CHÍNH THỨC + TÁCH ĐỀ + ĐỀ LUYỆN THI VÀO LỚP 10 CHUYÊN TOÁN CÁC TỈNH NĂM...
BỘ ĐỀ CHÍNH THỨC + TÁCH ĐỀ + ĐỀ LUYỆN THI VÀO LỚP 10 CHUYÊN TOÁN CÁC TỈNH NĂM...BỘ ĐỀ CHÍNH THỨC + TÁCH ĐỀ + ĐỀ LUYỆN THI VÀO LỚP 10 CHUYÊN TOÁN CÁC TỈNH NĂM...
BỘ ĐỀ CHÍNH THỨC + TÁCH ĐỀ + ĐỀ LUYỆN THI VÀO LỚP 10 CHUYÊN TOÁN CÁC TỈNH NĂM...Nguyen Thanh Tu Collection
 
NỘI DUNG HỌC THI ôn thi môn LỊCH SỬ ĐẢNG.docx
NỘI DUNG HỌC THI ôn thi môn LỊCH SỬ ĐẢNG.docxNỘI DUNG HỌC THI ôn thi môn LỊCH SỬ ĐẢNG.docx
NỘI DUNG HỌC THI ôn thi môn LỊCH SỬ ĐẢNG.docx7E26NguynThThyLinh
 
Tổng hợp Ngữ pháp Tiếng Anh 11 cho học sinh.docx
Tổng hợp Ngữ pháp Tiếng Anh 11 cho học sinh.docxTổng hợp Ngữ pháp Tiếng Anh 11 cho học sinh.docx
Tổng hợp Ngữ pháp Tiếng Anh 11 cho học sinh.docxTrangL188166
 
chủ nghĩa xã hội khoa học về đề tài cuối kì
chủ nghĩa xã hội khoa học về đề tài cuối kìchủ nghĩa xã hội khoa học về đề tài cuối kì
chủ nghĩa xã hội khoa học về đề tài cuối kìanlqd1402
 
Gieo quẻ kinh dịch, xin xăm,Xin lộc thánh.pdf
Gieo quẻ kinh dịch, xin xăm,Xin lộc thánh.pdfGieo quẻ kinh dịch, xin xăm,Xin lộc thánh.pdf
Gieo quẻ kinh dịch, xin xăm,Xin lộc thánh.pdfXem Số Mệnh
 
đồ án thương mại quốc tế- hutech - KDQTK21
đồ án thương mại quốc tế- hutech - KDQTK21đồ án thương mại quốc tế- hutech - KDQTK21
đồ án thương mại quốc tế- hutech - KDQTK21nguyenthao2003bd
 
Luận giải tử vi của 12 con giáp năm 2024 chi tiết và chính xác -...
Luận giải tử vi của 12 con giáp năm 2024 chi tiết và chính xác -...Luận giải tử vi của 12 con giáp năm 2024 chi tiết và chính xác -...
Luận giải tử vi của 12 con giáp năm 2024 chi tiết và chính xác -...Xem Số Mệnh
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
GIẢI-ĐỀ-CƯƠNG-NHẬP-MÔN-KHOA-HỌC-XÃ-HỘI-VÀ-NHÂN-VĂN-KHIÊM-BK69.pdf
GIẢI-ĐỀ-CƯƠNG-NHẬP-MÔN-KHOA-HỌC-XÃ-HỘI-VÀ-NHÂN-VĂN-KHIÊM-BK69.pdfGIẢI-ĐỀ-CƯƠNG-NHẬP-MÔN-KHOA-HỌC-XÃ-HỘI-VÀ-NHÂN-VĂN-KHIÊM-BK69.pdf
GIẢI-ĐỀ-CƯƠNG-NHẬP-MÔN-KHOA-HỌC-XÃ-HỘI-VÀ-NHÂN-VĂN-KHIÊM-BK69.pdfHngNguyn271079
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 

Último (20)

ĐỀ CƯƠNG + TEST ÔN TẬP CUỐI KÌ 2 TIẾNG ANH 11 - GLOBAL SUCCESS (THEO CHUẨN MI...
ĐỀ CƯƠNG + TEST ÔN TẬP CUỐI KÌ 2 TIẾNG ANH 11 - GLOBAL SUCCESS (THEO CHUẨN MI...ĐỀ CƯƠNG + TEST ÔN TẬP CUỐI KÌ 2 TIẾNG ANH 11 - GLOBAL SUCCESS (THEO CHUẨN MI...
ĐỀ CƯƠNG + TEST ÔN TẬP CUỐI KÌ 2 TIẾNG ANH 11 - GLOBAL SUCCESS (THEO CHUẨN MI...
 
.................KHTN 9....................................Viet Nam.......
.................KHTN 9....................................Viet Nam........................KHTN 9....................................Viet Nam.......
.................KHTN 9....................................Viet Nam.......
 
ĐỀ CƯƠNG + TEST ÔN TẬP CUỐI KÌ 2 TIẾNG ANH 11 - GLOBAL SUCCESS (THEO CHUẨN MI...
ĐỀ CƯƠNG + TEST ÔN TẬP CUỐI KÌ 2 TIẾNG ANH 11 - GLOBAL SUCCESS (THEO CHUẨN MI...ĐỀ CƯƠNG + TEST ÔN TẬP CUỐI KÌ 2 TIẾNG ANH 11 - GLOBAL SUCCESS (THEO CHUẨN MI...
ĐỀ CƯƠNG + TEST ÔN TẬP CUỐI KÌ 2 TIẾNG ANH 11 - GLOBAL SUCCESS (THEO CHUẨN MI...
 
Lập lá số tử vi trọn đời có luận giải chi tiết, chính xác n...
Lập lá số tử vi trọn đời có luận giải chi tiết, chính xác n...Lập lá số tử vi trọn đời có luận giải chi tiết, chính xác n...
Lập lá số tử vi trọn đời có luận giải chi tiết, chính xác n...
 
ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA GIỮA HỌC KÌ + CUỐI HỌC KÌ 2 NĂ...
ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA GIỮA HỌC KÌ + CUỐI HỌC KÌ 2 NĂ...ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA GIỮA HỌC KÌ + CUỐI HỌC KÌ 2 NĂ...
ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA GIỮA HỌC KÌ + CUỐI HỌC KÌ 2 NĂ...
 
ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA CUỐI HỌC KÌ 2 NĂM HỌC 2023-202...
ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA CUỐI HỌC KÌ 2 NĂM HỌC 2023-202...ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA CUỐI HỌC KÌ 2 NĂM HỌC 2023-202...
ĐỀ THAM KHẢO THEO HƯỚNG MINH HỌA 2025 KIỂM TRA CUỐI HỌC KÌ 2 NĂM HỌC 2023-202...
 
vat li 10 Chuyen de bai 4 Xac dinh phuong huong.pptx
vat li 10  Chuyen de bai 4 Xac dinh phuong huong.pptxvat li 10  Chuyen de bai 4 Xac dinh phuong huong.pptx
vat li 10 Chuyen de bai 4 Xac dinh phuong huong.pptx
 
TƯ TƯỞNG HỒ CHÍ MINH VỀ NHÀ NƯỚC CỦA NHÂN DÂN, DO NHÂN DÂN, VÌ NHÂN DÂN VÀ VẬ...
TƯ TƯỞNG HỒ CHÍ MINH VỀ NHÀ NƯỚC CỦA NHÂN DÂN, DO NHÂN DÂN, VÌ NHÂN DÂN VÀ VẬ...TƯ TƯỞNG HỒ CHÍ MINH VỀ NHÀ NƯỚC CỦA NHÂN DÂN, DO NHÂN DÂN, VÌ NHÂN DÂN VÀ VẬ...
TƯ TƯỞNG HỒ CHÍ MINH VỀ NHÀ NƯỚC CỦA NHÂN DÂN, DO NHÂN DÂN, VÌ NHÂN DÂN VÀ VẬ...
 
1第一课:你好.pptx. Chinese lesson 1: Hello.Nỉ hao
1第一课:你好.pptx. Chinese lesson 1: Hello.Nỉ hao1第一课:你好.pptx. Chinese lesson 1: Hello.Nỉ hao
1第一课:你好.pptx. Chinese lesson 1: Hello.Nỉ hao
 
Giáo trình xã hội học Thể dục Thể thao hay
Giáo trình xã hội học Thể dục Thể thao hayGiáo trình xã hội học Thể dục Thể thao hay
Giáo trình xã hội học Thể dục Thể thao hay
 
BỘ ĐỀ CHÍNH THỨC + TÁCH ĐỀ + ĐỀ LUYỆN THI VÀO LỚP 10 CHUYÊN TOÁN CÁC TỈNH NĂM...
BỘ ĐỀ CHÍNH THỨC + TÁCH ĐỀ + ĐỀ LUYỆN THI VÀO LỚP 10 CHUYÊN TOÁN CÁC TỈNH NĂM...BỘ ĐỀ CHÍNH THỨC + TÁCH ĐỀ + ĐỀ LUYỆN THI VÀO LỚP 10 CHUYÊN TOÁN CÁC TỈNH NĂM...
BỘ ĐỀ CHÍNH THỨC + TÁCH ĐỀ + ĐỀ LUYỆN THI VÀO LỚP 10 CHUYÊN TOÁN CÁC TỈNH NĂM...
 
NỘI DUNG HỌC THI ôn thi môn LỊCH SỬ ĐẢNG.docx
NỘI DUNG HỌC THI ôn thi môn LỊCH SỬ ĐẢNG.docxNỘI DUNG HỌC THI ôn thi môn LỊCH SỬ ĐẢNG.docx
NỘI DUNG HỌC THI ôn thi môn LỊCH SỬ ĐẢNG.docx
 
Tổng hợp Ngữ pháp Tiếng Anh 11 cho học sinh.docx
Tổng hợp Ngữ pháp Tiếng Anh 11 cho học sinh.docxTổng hợp Ngữ pháp Tiếng Anh 11 cho học sinh.docx
Tổng hợp Ngữ pháp Tiếng Anh 11 cho học sinh.docx
 
chủ nghĩa xã hội khoa học về đề tài cuối kì
chủ nghĩa xã hội khoa học về đề tài cuối kìchủ nghĩa xã hội khoa học về đề tài cuối kì
chủ nghĩa xã hội khoa học về đề tài cuối kì
 
Gieo quẻ kinh dịch, xin xăm,Xin lộc thánh.pdf
Gieo quẻ kinh dịch, xin xăm,Xin lộc thánh.pdfGieo quẻ kinh dịch, xin xăm,Xin lộc thánh.pdf
Gieo quẻ kinh dịch, xin xăm,Xin lộc thánh.pdf
 
đồ án thương mại quốc tế- hutech - KDQTK21
đồ án thương mại quốc tế- hutech - KDQTK21đồ án thương mại quốc tế- hutech - KDQTK21
đồ án thương mại quốc tế- hutech - KDQTK21
 
Luận giải tử vi của 12 con giáp năm 2024 chi tiết và chính xác -...
Luận giải tử vi của 12 con giáp năm 2024 chi tiết và chính xác -...Luận giải tử vi của 12 con giáp năm 2024 chi tiết và chính xác -...
Luận giải tử vi của 12 con giáp năm 2024 chi tiết và chính xác -...
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
GIẢI-ĐỀ-CƯƠNG-NHẬP-MÔN-KHOA-HỌC-XÃ-HỘI-VÀ-NHÂN-VĂN-KHIÊM-BK69.pdf
GIẢI-ĐỀ-CƯƠNG-NHẬP-MÔN-KHOA-HỌC-XÃ-HỘI-VÀ-NHÂN-VĂN-KHIÊM-BK69.pdfGIẢI-ĐỀ-CƯƠNG-NHẬP-MÔN-KHOA-HỌC-XÃ-HỘI-VÀ-NHÂN-VĂN-KHIÊM-BK69.pdf
GIẢI-ĐỀ-CƯƠNG-NHẬP-MÔN-KHOA-HỌC-XÃ-HỘI-VÀ-NHÂN-VĂN-KHIÊM-BK69.pdf
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 

Oop unit 03 xây dựng lớp

  • 1. Bài 3 Xây dựng lớp Trịnh Thành Trung trungtt@soict.hust.edu.vn
  • 2. Nội dung 1. Trừu tượng hóa dữ liệu 2. Lớp và thành phần của lớp 3. Xây dựng lớp 4. Tạo và sử dụng đối tượng 5. Thành viên hằng & tĩnh 6. Biểu đồ lớp
  • 3. Trừu tượng hóa dữ liệu Data abstraction 1
  • 4. 4 Trừu tượng hóa • Abstraction − "a concept or idea not associated with any specific instance" • Giảm thiểu và tinh lọc các chi tiết nhằm tập trung vào một số khái niệm/vấn đề quan tâm tại một thời điểm. − Ví dụ: Các định nghĩa toán học: Ký hiệu x được dùng để thể hiện cho các phép nhân
  • 5. 5 Trừu tượng hóa • Trừu tượng hóa điều khiển: Sử dụng các chương trình con (subprogram) và các luồng điều khiển (control flow) − Ví dụ: a := (1 + 2) * 5 + Nếu không có trừu tượng hóa điều khiển, LTV phải chỉ ra tất cả các thanh ghi, các bước tính toán mức nhị phân… • Trừu tượng hóa dữ liệu: Xử lý dữ liệu theo các cách khác nhau − Ví dụ: Kiểu dữ liệu + Sự tách biệt rõ ràng giữa các thuộc tính trừu tượng của kiểu dữ liệu và các chi tiết thực thi cụ thể của kiểu dữ liệu đó.
  • 6. 6 Trừu tượng hóa dữ liệu trong LTHĐT • Đối tượng trong thực tế phức tạp • Cần đơn giản hóa, bỏ qua những chi tiết không cần thiết • Chỉ “trích rút” lấy những thông tin liên quan, thông tin quan tâm, quan trọng với bài toán
  • 7. 7 Ví dụ: Điện thoại Nokia • Những thông tin gì có thể cảm nhận được khi nhìn các "đối tượng" này? − Tất cả là điện thoại Nokia − Các điện thoại này có loại nắp trượt, có loại nắp gập, có loại dạng bar − Một số điện thoại là dòng doanh nhân, một số dòng âm nhạc, 3G… − Bàn phím loại tiêu chuẩn, QWERTY hoặc không có bàn phím − Màu sắc, chất liệu, kích cỡ… khác nhau − v.v…
  • 8. 8 Ví dụ: Điện thoại Nokia • Tổ chức là đối tượng điện thoại này vào các đặc tính chung − Vẫn còn rất khái quát
  • 9. 9 Ví dụ: Điện thoại Nokia • Chia thành các danh mục nhỏ hơn − Ví dụ: Theo chức năng • Xác định các đặc tính riêng Người nghe nhạc quan tâm đến điều gì Doanh nhân quan tâm đến điều gì
  • 10. 10 Ví dụ: Điện thoại Nokia • Quay lại khái quát
  • 11. 11 Ví dụ: Điện thoại Nokia • Trừu tượng hóa các đối tượng điện thoại Nokia
  • 12. 12 Ví dụ • Trừu tượng hóa các đối tượng Chưa phân loại Sinh vật – Động vật – Loài người Sinh vật – Động vật – Động vật nguy hiểm
  • 13. Lớp và thành phần của lớp Các khái niệm chung về lớp và các thành phần của lớp 2
  • 14. 14 Lớp • Lớp (Class) là cách phân loại (classify) các đối tượng dựa trên đặc điểm chung của các đối tượng đó. • Lớp có thể coi là khuôn mẫu để tạo các đối tượng − Ví dụ: Người, Sinh Vật, Màu sắc… • 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 − Một đối tượng gọi là một thể hiện của lớp
  • 15. 15 Các thành phần của lớp • Lớp đóng gói các phương thức và thuộc tính chung của các đối tượng cùng một loại Thuộc tính: các thông tin liên quan đến thuộc tính Phương thức: các hành vi đối tượng có thể thực hiện Class Object MyBook borrow countPages Vu Thi Huong Giang 250 pages Thể hiện: Một đối tượng cụ thể Thuộc tính thể hiện: Những giá trị gán cho các thuộc tính của một đối tượng cụ thể Human computer interaction getAuthorName
  • 16. 16 Thuộc tính • Thuộc tính − Một thuộc tính của một lớp là một trạng thái chung được đặt tên của tất cả các thể hiện của lớp đó có thể có − Ví dụ: Lớp Ô tô có các thuộc tính + Màu sắc + Vận tốc • 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
  • 17. 17 Phương thức • Phương thức − 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
  • 18. 18 Phạm vi • Phạm vi nhìn thấy được xác định khả năng nhìn thấy được của một thành phần của chương trình với các thành phần khác của chương trình • Đối với lớp − Phạm vi nhìn thấy được có thể được áp dụng cho các thành phần của lớp + private: chỉ truy cập được bên trong lớp đó + public: có thể truy cập được tại mọi nơi
  • 19. Xây dựng lớp Xây dựng các lớp cùng các thuộc tính và phương thức của nó trong Java 3
  • 20. 20 Gói • Gói (package) giống như thư mục giúp: − Tổ chức và xác định vị trí lớp dễ dàng và sử dụng các lớp một cách phù hợp. − Tránh cho việc đặt tên lớp bị xung đột (trùng tên) + Các package khác nhau có thể chứa các lớp có cùng tên − Bảo vệ các lớp, dữ liệu và phương thức ở mức rộng hơn so với mối quan hệ giữa các lớp. • Một package cũng có thể chứa các package khác • Còn được gọi là không gian tên (namespace) trong một số ngôn ngữ lập trình (C/C++…)
  • 21. 21 Gói trong Java • Java đã xây dựng sẵn một số package − java.lang − javax.swing − java.io − … • Có thể tự tạo ra các gói để tổ chức các lớp − Cú pháp: package <tên gói>;
  • 22. 22 Gói trong Java • Tên gói phải được viết trên cùng của file mã nguồn • Chỉ được phép có 1 câu khai báo gói trong mỗi file mã nguồn, và khai báo này sẽ được áp dụng cho tất cả các dữ liệu trong file đó. • Một gói có thể được đặt trong một gói khác − Phân cách bằng dấu . − Ví dụ package trungtt.oop.k59;
  • 23. 23 Quy ước đặt tên gói • Tên gói được viết toàn bộ bằng chữ thường để tránh xung đột với tên lớp hay giao diện • Đối với các công ty có tên miền Internet: Sử dụng tên miền đảo để đặt tên gói − Ví dụ: Một lập trình viên tại công ty example.com sẽ đặt tên gói là com.example.mypackage
  • 24. 24 Các package trong Java •java.applet •java.awt •java.beans •java.io •java.lang •java.math •java.net •java.nio •java.rmi •java.security •java.sql •java.text •java.util •javax.accessibility •javax.crypto •javax.imageio •javax.naming •javax.net •javax.print •javax.rmi •javax.security •javax.sound •javax.sql •javax.swing •javax.transaction •javax.xml •org.ietf.jgss •org.omg.CORBA •org.omg.CosNaming •org.omg.Dynamic •org.omg.IOP •org.omg.Messaging •org.omg.PortableInterceptor •org.omg.PortableServer •org.omg.SendingContext •org.omg.stub.java.rmi •org.w3c.dom •org.xml
  • 25. 25 Các package trong Java • Các package cơ bản trong Java − java.lang + Cung cấp các lớp cơ bản cho thiết kế ngôn ngữ lập trình Java + Bao gồm wrapper classes, String và StringBuffer, Object, ... + Import ngầm định vào tất cả các lớp − java.util + Bao gồm tập hợp framework, mô hình sự kiện, date time, và nhiều tiện ích khác. − java.io + Cung cấp khả năng vào/ra hệ thống với các luồng dữ liệu và hệ thống file.
  • 26. 26 Các package trong Java • Các package cơ bản trong Java − java.math + Cung cấp các lớp thực thi các phép toán với số nguyên và các phép toán thập phân − java.sql + Cung cấp các API cho phép truy nhập và xử lý dữ liệu được lưu trữ trong một nguồn dữ liệu (thường sử dụng cơ sở dữ liệu quan hệ) − javax.swing + Cung cấp các lớp và giao diện cho phép tạo ra các ứng dụng đồ họa. − …
  • 27. 27 Không gian tên trong C++/C# − Cú pháp: namespace <tên namespace> { // Khai báo các lớp ở đây } − Đối không gian tên nằm trong không gian tên khác namespace <tên namespace ngoài> { namespace <tên namespace trong> { // Khai báo các lớp ở đây } }
  • 28. 28 Khai báo lớp • Cú pháp: sử dụng từ khóa class class <Tên Lớp> { // Nội dung lớp } Ví dụ class Dog { // Nội dung lớp } • Cú pháp khai báo lớp sử dụng chỉ định truy cập: accessmodifier class <Tên Lớp> { // Nội dung lớp }
  • 29. 29 Khai báo lớp sử dụng chỉ định truy cập • Chỉ định truy cập: + public: Lớp có thể được truy cập từ bất cứ đâu, kể cả bên ngoài package chứa lớp đó. + private: Lớp chỉ có thể được truy cập trong phạm vi lớp đó + mặc định: Lớp có thể được truy cập từ bên trong package chứa lớp đó. public mặc định private Cùng lớp ✔ ✔ ✔ Cùng gói ✔ ✔ ✘ Khác gói ✔ ✘ ✘ inner class
  • 30. 30 Thuộc tính • Là các thông tin, trạng thái mà đối tượng của lớp đó có thể mang • Các thuộc tính phải được khai báo bên trong lớp • Mỗi đối tượng có bản sao các thuộc tính của riêng nó − Giá trị của một thuộc tính thuộc các đối tượng khác nhau là khác nhau. • Bản chất của các thuộc tính là các thành phần dữ liệu của đối tượng − Khai báo: tương tự như biến
  • 31. 31 Thuộc tính • Cú pháp khai báo thuộc tính accessmodifier kiểu tênThuộcTính; • Thuộc tính có thể được khởi tạo khi khai báo − Các giá trị mặc định sẽ được sử dụng nếu không được khởi tạo.
  • 32. 32 Phương thức • Xác định cách một đối tượng đáp ứng lại thông điệp − Khai báo: tương tự khai báo hàm • Phương thức xác định các hoạt động 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 đó
  • 33. 33 Phương thức • Cú pháp accessmodifier kiểuTrảVề tênPhươngThức (ds tham số) { // Nội dung phương thức }
  • 34. 34 Chỉ định truy cập • Chỉ định truy cập cho thành viên của lớp: + public: Thuộc tính hoặc phương thức có thể được truy cập từ bất cứ đâu, kể cả bên ngoài package chứa lớp đó. + private: Thuộc tính hoặc phương thức chỉ có thể được truy cập trong phạm vi lớp đó + mặc định: Thuộc tính hoặc phương thức có thể được truy cập từ bên trong package chứa lớp đó. public mặc định private Cùng lớp ✔ ✔ ✔ Cùng gói ✔ ✔ ✘ Khác gói ✔ ✘ ✘
  • 35. Ví dụ: Lớp BankAccount package com.megabank.models; public class BankAccount { String owner; double balance; boolean debit(double amount){ if (amount > balance) return false; else { balance -= amount; return true; } } void credit(double amount){ balance += amount; } }
  • 36. Tạo và sử dụng đối tượng Khai báo và khởi tạo đối tượng. Truy cập đến các phương thức và thuộc tính của đối tượng 4
  • 37. 37 Khai báo và khởi tạo dữ liệu • Trong Java, mọi dữ liệu cần phải được khai báo và khởi tạo trước khi sử dụng • Ví dụ − Khai báo int i; − Khởi tạo i = 3; − Hoặc kết hợp khai báo và khởi tạo int i = 3;
  • 38. 38 Khai báo và khởi tạo dữ liệu • Trong C++, dữ liệu có thể tự động được khởi tạo khi khai báo − Ví dụ: int i; − Dữ liệu sẽ được khởi tạo với giá trị mặc định của kiểu dữ liệu tương ứng • Trong Java, dữ liệu KHÔNG được tự động khởi tạo khi khai báo − Ví dụ: int i; System.out.println(i); //LỖI
  • 39. 39 Khai báo • Để khai báo dữ liệu, ta cần phải xác định kiểu của dữ liệu đó − Cú pháp: <kiểu> tên biến; − Ví dụ: int i; // Biến i là kiểu int • Trong OOP, lớp có thể coi là kiểu dữ liệu trừu tượng do người dùng định nghĩa và đối tượng chính là biến của kiểu dữ liệu đó • Khai báo: tương tự khai báo biến − Cú pháp: <Tên Lớp> tên đối tượng; − Ví dụ: BankAccount acc; // Đối tượng acc là một BankAccount
  • 40. 40 Khởi tạo • Đối với kiểu dữ liệu nguyên thủy: Dùng toán tử = − Ví dụ: i = 3; • Đối với kiểu dữ liệu tham chiếu (1): Khởi tạo bằng toán tử new − Ví dụ: acc1 = new BankAccount(); • Nếu không được khởi tạo: đối tượng mang giá trị null (1) tương tự con trỏ trong C++
  • 41. 41 Khởi tạo • Khi đối tượng được khởi tạo, các thành phần dữ liệu (thuộc tính) của đối tượng được khởi tạo với giá trị mặc định của kiểu dữ liệu tương ứng − number data type  0; − reference type  null − boolean  false
  • 42. 42 Kết hợp khai báo và khởi tạo dữ liệu • Có thể kết hợp khai báo và khởi tạo dữ liệu − Cú pháp: <Tên Lớp> tên đối tượng = new <Tên Lớp>(); − Ví dụ BankAccount acc = new BankAccount();
  • 43. 43 Truy cập đến phương thức và thuộc tính của đối tượng • Sử dụng toán tử . • Không cần thiết nếu truy cập từ trong cùng một lớp
  • 44. 44 Tự tham chiếu • Sử dụng từ khóa this • Cho phép truy cập vào đối tượng hiện tại của lớp. • Quan trọng khi hàm/phương thức thành phần thao tác trên hai hay nhiều đối tượng. • Xóa đi sự nhập nhằng giữa một biến cục bộ, tham số với thành phần dữ liệu của lớp • Không dùng bên trong các khối lệnh static
  • 45. 45 Ví dụ: từ khóa this public class Account { // instance variable String owner; // Account name long balance; // Balance //... // value setting method void setAccountInfo(String owner, long balance) { this.owner = owner; this.balance = balance; } //... }
  • 46. 46 Ví dụ: Khởi tạo đối tượng Account object of Mrs. Giang Account object of Mr. Tuan owner: Vu Thi Huong Giang balance: 2.000.000 VND owner balance Variable declaration Class Account owner: Nguyen Manh Tuan balance: 1.000.000 VND
  • 47. 47 Ví dụ: Truy cập đến các thuộc tính Account object of Ms. Giang Account object of Mr. Tuan owner: Vu Thi Huong Giang balance: 2.000.000 VND owner: Nguyen Manh Tuan balance: 1.000.000 VND public class Account { String name; //Account name long balance; //Balance void display(){ System.out.println(…); } void deposit (long money){ balance += money; } } Account acc1 = new Account(); acc1.name = “Vu T Huong Giang”; acc1.balance = “2000000”; Account acc2 = new Account(); acc2.name = “Nguyen Manh Tuan”; acc2.balance = “1000000”;
  • 48. 48 Ví dụ: Truy cập đến các phương thức 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); obj (Caller) Account object owner: Vu Thi Huong Giang balance: 2.000.000 VND interest 0.05f 0.04f 0.03f
  • 49. 49 Ví dụ String result; result = javax.swing.JOptionPane.showInputDialog("Hay nhap ten ban:"); javax.swing.JOptionPane.showMessageDialog(null, "Xin chao " + result + "!"); Ví dụ import javax.swing.JOptionPane; String result; result = JOptionPane.showInputDialog("Hay nhap ten ban:"); JOptionPane.showMessageDialog(null, "Xin chao " + result + "!"); Tham chiếu đến lớp khác gói • Đối với lớp trong cùng một gói: chỉ cần tên lớp − Ví dụ: BankAccount • Đối với lớp khác gói: phải cung cấp đầy đủ tên lớp và tên gói − Ví dụ trong Java: oop.trungtt.k59.BankAccount • Sử dụng lệnh import để khai báo các package hoặc các lớp để khi sử dụng không cần nêu tên đầy đủ. hoặc import javax.swing.*; để import tất cả các lớp trong gói
  • 50. 50 Đối tượng trong C++ • Trong C++, có 2 cách sử dụng đối tượng − Khởi tạo đối tượng truyền thống BankAccount acc; acc.deposit(1000000); − Con trỏ đối tượng  tương tự đối tượng trong Java BankAccount *acc = new BankAccount(); acc->deposit(1000000);
  • 51. Thành viên hằng & thành viên tĩnh final, static 5
  • 52. 52 Thành viên tĩnh • Trong lập trình cấu trúc: Các biến địa phương khai báo cục bộ trong hàm: − Trong trường hợp các biến địa phương không khai báo là biến static thì mỗi lần gọi hàm chương trình dịch lại đăng ký tạo ra biến mới − Khi chúng ta khai báo các biến địa phương là các biến static thì chương trình dịch sẽ chỉ khởi tạo duy nhất một lần (ở lần gọi đầu tiên) biến địa phương này và thông qua con trỏ stack ở những lần gọi sau chi tham chiếu tới biến đã tạo ra này để sử dụng lại chúng mà không tạo ra biến mới − Tạo một lần/tham chiếu nhiều lần/lưu giá trị của lần tham chiếu trước
  • 53. 53 Biến địa phương static Biến địa phương static: void f() { static int x=0; x++; } Lần gọi 1: f() Lần gọi 2: f() Biến địa phương không static void f() { int x=0; x++; } Lần gọi 1: f() Lần gọi 2: f() 0 1 0 0
  • 54. 54 Thành viên tĩnh trong OOP • Trong lập trình hướng đối tượng − Các thành viên bình thường là thành viên thuộc về đối tượng − Các thành viên tĩnh (static) là các thành viên thuộc về lớp • Cú pháp khai báo thành viên static: <chỉ định truy cập> static <kiểu> tên biến;
  • 55. 55 Thuộc tính static • Là thuộc tính mang thông tin chung của một lớp • Thay đổi giá trị của một thành viên static trong một đối tượng của lớp sẽ thay đổi giá trị của thành viên này của tất cả các đối tượng khác của lớp đó.
  • 56. Ví dụ class TestStatic{ public static int iStatic; public int iNonStatic; } public class TestS { public static void main(String[] args) { TestStatic obj1 = new TestStatic(); obj1.iStatic = 10; obj1.iNonStatic = 11; System.out.println(obj1.iStatic + ”,” +obj1.iNonStatic); TestStatic obj2 = new TestStatic(); System.out.println(obj2.iStatic + ”,” + obj2.iNonStatic); obj2.iStatic = 12; System.out.println(obj1.iStatic + ”,” + obj1.iNonStatic); } }
  • 57. 57 Phương thức static • Các phương thức không tương tác với các "thể hiện" của lớp • Các phương thức "tiện ích", không cần thiết phải khởi tạo đối tượng để sử dụng • Các phương thức static chỉ có thể truy cập vào các thuộc tính static và chỉ có thể gọi các phương thức static trong cùng lớp
  • 58. Ví dụ class MyUtils { public static double mean(int[] p) { int sum = 0; for (int i=0; i<p.length; i++) { sum += p[i]; } return ((double)sum) / p.length; } } // Gọi phương thức tĩnh bên trong lớp double avgAtt = mean(attendance); // Gọi phương thức tĩnh bên ngoài lớp double avgAtt = MyUtils.mean(attendance); Phương thức mean có thể không phải khai báo static tuy nhiên muốn gọi nó phải thông qua một đối tượng
  • 59. 59 Thành viên lớp và thành viên đối tượng Thành viên đối tượng • Thuộc tính/phương thức chỉ được truy cập thông qua đối tượng • Mỗi đối tượng có 1 bản sao riêng của 1 thuộc tính đối tượng • Giá trị của 1 thuộc tính đối tượng của các đối tượng khác nhau là khác nhau. Thành viên lớp (static) • Thuộc tính/phương thức có thể được truy cập thông qua lớp • Các đối tượng có chung 1 bản sao của 1 thuộc tính lớp • Giá trị của 1 thuộc tính lớp của các đối tượngkhác nhau là giống nhau.
  • 60. Ví dụ • Lớp JOptionPane trong javax.swing • Thuộc tính • Phương thức
  • 61. Ví dụ JOptionPane.showMessageDialog(null, "Ban da thao tac loi", "Thong bao loi", JOptionPane.ERROR_MESSAGE); JOptionPane.showConfirmDialog(null, "Ban co chac chan muon thoat?", "Hay lua chon", OptionPane.YES_NO_OPTION);
  • 62. Ví dụ Object[] options = { "OK", "CANCEL" }; JOptionPane.showOptionDialog(null, “Nhan OK de tiep tuc", "Canh bao", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null,options,options[0]);
  • 63. 63 Thành viên hằng • Một thuộc tính/phương thức không thể thay đổi giá trị/nội dung trong quá trình sử dụng. • Cú pháp khai báo: Sử dụng từ khóa final <chỉ định truy cập> final <kiểu> tên hằng = giá trị; • Ví dụ: final double PI = 3.141592653589793; public final int VAL_THREE = 39; private final int[] A = { 1, 2, 3, 4, 5, 6 };
  • 64. 64 Thành viên hằng & tĩnh Thông thường các hằng số liên quan đến lớp được khai báo là static final • Tương đương với const trong C++
  • 65. Biểu đồ lớp Biểu diễn lớp trong UML 6
  • 66. 66 Biểu đồ lớp • Lớp (class) được biểu diễn bằng 1 hình chữ nhật với 3 thành phần: • Tên lớp • Cấu trúc (thuộc tính) • Hành vi (phương thức) Professor - name - employeeID : UniqueId - hireDate - status - discipline - maxLoad + submitFinalGrade() + acceptCourseOffering() + setMaxLoad() + takeSabbatical() + teachClass()
  • 67. 67 Chỉ định truy cập • Trong biểu đồ lớp, dấu – được sử dụng để thể hiện chỉ định truy cập private • Dấu + được sử dụng để thể hiện chỉ định truy cập public Professor - name - employeeID : UniqueId - hireDate - status - discipline - maxLoad + submitFinalGrade() + acceptCourseOffering() + setMaxLoad() + takeSabbatical() + teachClass()
  • 68. 68 Giá trị tĩnh • Giá trị tĩnh: Thể hiện bằng dấu gạch chân Student - name - address - nextAvailID : int + addSchedule ([in] theSchedule : Schedule, [in] forSemester : Semester) + getSchedule ([in] forSemester : Semester) : Schedule + hasPrerequisites ([in] forCourseOffering : CourseOffering) : boolean # passed ([in] theCourseOffering : CourseOffering) : boolean + getNextAvailID () : int - studentID
  • 69. 69 Lớp và đối tượng trong UML Class Objects Student - name - address - studentID - dateOfBirth :Student - name = “M. Modano” - address = “123 Main St.” - studentID = 9 - dateOfBirth = “03/10/1967” sv2:Student - name = “D. Hatcher” - address = “456 Oak Ln.” - studentID = 2 - dateOfBirth = “12/11/1969”
  • 70. 70 Ví dụ • Lớp BankAccount • Lớp Student BankAccount - owner: String - balance: double + debit(double): boolean + credit(double) Student - name - address - studentID - dateOfBirth