You are on page 1of 15

Bài 7 Lớp và các thành phần của lớp

Kế thừa và đa hình

Bài 7 Lớp và các thành phần của lớp-Kế thừa và đa hình 1


MỤC TIÊU
• Giới thiệu về lập trình hướng đối tượng

• Đối tượng là gì?

• Lớp là gì?

• Lớp trong Python

• Nạp chồng – Overload

• Kế thừa và ghi đè

Bài 7 Lớp và các thành phần của lớp-Kế thừa và đa hình 2


Giới thiệu về lập trình hướng đối tượng

Các ngôn ngữ lập trình Các ngôn ngữ lập trình Vấn đề tái sử dụng
dựa trên cũ như pascal, c tập
trung nhiều vào
Cách thao tác
Dữ liệu Cách thao tác
với dữ liệu
với dữ liệu
Vấn đề bảo trì
hơn là dữ liệu của nó

Bài 7 Lớp và các thành phần của lớp-Kế thừa và đa hình 3


Giới thiệu về lập trình hướng đối tượng

Ưu điểm

Khả năng tái sử dụng cao


Lập trình hướng đối tượng
ra đời tập trung vào Dễ dàng bảo trì

Dữ liệu trên Dễ dàng mở rộng dự án


đối tượng

Bảo mật cao


hơn là cách thao tác với
dữ liệu
Tiết kiệm tài nguyên đáng kể cho hệ thống

Bài 7 Lớp và các thành phần của lớp-Kế thừa và đa hình 4


Đối tượng là gì?

Đối tượng là một thực thể có các


thông số và tính năng xác định

Model: HP 8770W
Đối tượng Ram: 16GB
Monitor: 17.3” FullHD
Chipset: Core i7 3610QM
States biểu diễn các Start()
dữ liệu của đối tượng Shutdown()
Sleep()
Restart()
Behaviour biểu diễn
các hành vi của đối Id: T0012
tượng FullName: Shan
Phone: 0968018161
YearOfBorn: 1980
Teach()
Present()

Teacher

Bài 7 Lớp và các thành phần của lớp-Kế thừa và đa hình 5


Lớp là gì?

• Các đối tượng có chung tính chất và hành vi


được nhóm lại thành một Class. Nói cách
khác Class là một prototype để tạo ra các đối
tượng.

class Bird

Name
Color
Weight

Sound()
Fly()

Bài 7 Lớp và các thành phần của lớp-Kế thừa và đa hình 6


Lớp trong Python
• Python là một ngôn ngữ lập trình hướng đối tượng. Hầu hết mọi thứ trong Python đều
là một đối tượng, với các thuộc tính và phương thức của nó.
# định nghĩa 1 lớp trống # định nghĩa lớp với 3 thuộc tính và 1 phương thức
class Dog: class Student:
pass # định nghĩa phương thức hiển thị
# self là tham số đầu tiên bắt buộc phải có
# tạo đối tượng
# nó đại diện cho đối tượng hiện tại lúc chạy
d=Dog() def display(self):
# gán giá trị cho thuộc tính print("Mã số:",self.studentid)
d.name="Hound" print("Họ và tên:",self.fullname)
print(d.name) print("Tuổi:",self.age)

# Tạo đối tượng


st=Student()
# gán giá trị cho thuộc tính
st.studentid=10
st.fullname="Lại Đức Chung"
st.age=40
# gọi phương thức ( không cần truyền tham số self)
st.display()

Bài 7 Lớp và các thành phần của lớp-Kế thừa và đa hình 7


Lớp trong Python

# định nghĩa lớp # tạo lớp với 3 thuộc tính và 2 phương thức
class Student: class Student:
# định nghĩa phương thức khởi tạo # this là đại diện cho đối tượng hiện tại lúc chạy
# với 3 thuộc tính # this là tham số đầu tiên bắt buộc
def __init__(self, studentid, fullname, age): # this không cần truyền khi tạo đối tượng
self.studentid=studentid # this có thể thay bằng tên bất kỳ
self.fullname=fullname def __init__(this, studentid, studentname, age):
self.age=age this.studentid=studentid
# định nghĩa phương thức in this.studentname=studentname
def display(self): this.age=age
print("Mã số:",self.studentid) def display(this):
print("Họ và tên:",self.fullname) print(this.studentid)
print("Tuổi:",self.age) print(this.studentname)
print(this.age)
# Tạo đối tượng # tạo đối tượng
st=Student(10,"Lại Đức Chung",40) st=Student("S001","Trần Huy Hoàng",25)
# gọi phương thức st.display()
st.display()

Bài 7 Lớp và các thành phần của lớp-Kế thừa và đa hình 8


Overload method
• Python không hỗ trợ overload method, tuy nhiên bạn vẫn có thể tạo nhiều phương
thức giống tên nhau và python chỉ nhận phương thức sau cùng.
# định nghĩa lớp Calculate
class Calculate:
# định nghĩa phương thức cộng 2 số
def add(self,a,b):
return a+b
# định nghĩa phương thức cộng 3 số
def add(self, a,b,c):
return a+b+c
# tạo đối tượng
cal=Calculate()
# dòng dưới này gọi lỗi
# print(cal.add(4,5))
# dòng này gọi ok
print(cal.add(4,5,6))

Bài 7 Lớp và các thành phần của lớp-Kế thừa và đa hình 9


Overload method
• Ngoài ra chúng ta có thể tạo duy nhất một phương thức nhưng nhận nhiều loại tham
số tương thự như overload method.
# định nghĩa lớp tiện ích # tạo đối tượng
class Utility:
def add(self,type, *args): u=Utility()
if type=='int': print(u.add('int',4,7))
result=0
for x in args: print(u.add('str','hello',' python'))
result+=x
return result
if type=='str':
result=''
for x in args:
result+=x
return result

Bài 7 Lớp và các thành phần của lớp-Kế thừa và đa hình 10


Kế thừa và ghi đè

# định nghĩa lớp Person # tạo lớp kế thừa từ Person


class Person: class Student(Person):
# hàm khởi tạo # hàm khởi tạo
def __init__(self, id, name): def __init__(self, id, name, age):
self.id=id #gọi hàm khởi tạo lớp cha
self.name=name Person.__init__(self,id,name)
# phương thức hiển thị self.age=age
def display(self): # ghi đè phương thức display
print(self.id) def display(self):
print(self.name) # gọi hàm display lớp cha
Person.display(self)
print(self.age)

Bài 7 Lớp và các thành phần của lớp-Kế thừa và đa hình 11


Kế thừa và ghi đè

# tạo lớp kế thừa từ Person # tạo đối tượng


class Student(Person): st=Student("S001","Lại Đức Chung",40)
# hàm khởi tạo # gọi phương thức hiển thị
def __init__(self, id, name, age): st.display()
#gọi hàm khởi tạo lớp cha
super().__init__(id,name)
self.age=age
# ghi đè phương thức display
def display(self):
# gọi hàm display lớp cha
super().display()
print(self.age)

Bài 7 Lớp và các thành phần của lớp-Kế thừa và đa hình 12


HỎI ĐÁP

Bài 7 Lớp và các thành phần của lớp-Kế thừa và đa hình 13


Bài 7 Lớp và các thành phần của lớp-Kế thừa và đa hình 14
238 Hoàng Quốc Việt, Bắc Từ Liêm, Hà Nội

0968.27.6996

tuyensinh@bachkhoa-aptech.edu.vn

www.bachkhoa-aptech.edu.vn

Bài 7 Lớp và các thành phần của lớp-Kế thừa và đa hình 15

You might also like