Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit ce9f169

Browse files
committed
Update readme.md to include inheritance examples in object-oriented programming
1 parent 7f24f63 commit ce9f169

File tree

1 file changed

+136
-85
lines changed

1 file changed

+136
-85
lines changed
Lines changed: 136 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -1,111 +1,162 @@
11
<div align="center">
22

3-
# Tính trừu tượng trong lập trình hướng đối tượng
4-
3+
# Tính kế thừa trong lập trình hướng đối tượng
54
</div>
65

76
### Ví dụ 1
8-
Tạo lớp trừu tượng **Shape** định nghĩa trừu tượng cho các hình dạng.<br>Bao gồm
9-
- Các thuộc tính:
10-
- **color**: String, đại diện cho màu sắc của hình dạng.
11-
- Các phương thức:
12-
- Gồm các phương thức getter và setter cho **color**
13-
- Các phương thức trừu tượng
14-
- **getArea():** Float, dùng để tính diện tích
15-
- **getPerimeter()**: Float, dùng để tính chu vu
16-
- **input()**: void, dùng để nhập thông tin.
17-
- **toString()**: String, dùng để in ra các thông tin của hình dạng.
18-
19-
Tạo class **Triangle** kế thừa abstract class **Shape**<br> Bao gồm:
7+
8+
Tạo class **ElectronicDevice** đùng để biểu diễn cho các thiết bị điện tử. <br>Bao gồm:
209
- Các thuộc tính:
21-
- **sideA**: float, dùng để đại diện cho cạnh thứ nhất của hình tam giác
22-
- **sideB**: float, dùng để đại diện cho cạnh thứ hai của hình tam giác
23-
- **sideC**: float, dùng để đại diện cho cạnh thứ ba của hình tam giác
10+
**manufacturer**: String, dùng để đại diện cho nhà sản xuất của thiết bị điện tử.
11+
**price**: long, dùng để đại diện cho giá của thiết bị điện tử.
2412
- Các phương thức:
25-
- Phương thức khởi tạo mặc định và phương thức khởi tạo có thuộc tính
26-
- Các phương thức **getter()****setter()**
27-
- Ghi đè tất cả những phương thức trừu tượng của **Shape**
13+
- Phương thức khởi tạo mặc định và phương thức khởi tạo có thuộc tính.
14+
- Các phương thức **getter**, **setter****toString()**
15+
- Phương thức **input()** cho phép nhập thông tin của thiết bị điện tử đó.
2816

29-
Tạo class **Rectangel** kế thừa class **Shape**<br>Bao gồm:
17+
Tạo class **Laptop** dùng để biểu diễn các máy tính xách tay. Kế thừa class **ElectronicDevice**<br>Bao gồm:
3018
- Các thuộc tính:
31-
- **width**: float, dùng để đại diện cho chiều rộng.
32-
- **height**: float, dùng để đại diện cho chiều dài.
19+
- **screenSize**: String, dùng để đại diện cho kích thước màn hình của máy tính xách tay đó.
3320
- Các phương thức:
34-
- Phương thức khởi tạo mặc định và phương thức khởi tạo có thuộc tính
35-
- Các phương thức **getter()****setter()**
36-
- Ghi đè tất cả những phương thức trừu tượng của **Shape**
21+
- Phương thức khởi tạo mặc định và phương thức khởi tạo có thuộc tính.
22+
- Các **getter****setter** cho các thuộc tính **color** va **breed**
23+
- Ghi đè lại phương thức **toString()****input()**
24+
3725

3826
### Ví dụ 2
39-
Tạo lớp trừu tượng **Student** định nghĩa trừu tượng cho các hình dạng.<br>Bao gồm:
40-
- Các thuộc tính:
41-
- **masv**: String, dùng dể đại diện cho mã sinh viên
42-
- **name**: String, dùng dể đại diện cho tên của sinh viên
43-
- **age**: int, dùng dể lưu đại diện cho tuổi của sinh viên
44-
- Các phương thức:
45-
- Các phương thức khởi tạo
46-
- Gồm các phương thức getter và setter cho **masv**, **name****age**
47-
- **input()**: void, dùng để nhập thông tin.
48-
- Các phương thức trừa tượng
49-
- **toString()**: String, dùng để in ra các thông tin của sinh viên
50-
- **calculateAverage()**: float, dùng làm trung bình tất cả các môn của sinh viên
51-
52-
Tạo lớp **StudentIT** kế thừa lớp trừu tượng **Student**.<br>Bao gồm:
53-
- Các thuộc tính:
54-
- **scoreCpp**: float, dùng để đại diện cho điểm C++
55-
- **scoreJava**: float, dùng để đại diện cho điểm Java
56-
- Các phương thức:
57-
- Phương thức khởi tạo mặc định và phương thức khởi tạo có thuộc tính
58-
- Các phương thức **getter()****setter()**
59-
- Ghi đè phương thưc **input()**
60-
- Ghi đè tất cả những phương thức trừu tượng của **Student**
6127

62-
Tạo lớp **StudentBA** kế thừa lớp trừu tượng **Student**.<br>Bao gồm:
63-
- Các thuộc tính:
64-
- **scorePm**: float, dùng để đại diện cho điểm học phần quản lí dự án
65-
- **scoreBA**: float, dùng để đại diện cho điểm học phần quản trị kinh doanh
28+
Tạo class **Animal** để biểu diễn tập hợp các động vật.<br> Bao gồm:
29+
- Các thuộc tính
30+
- **name**: String, dùng để đại diện cho tên của động vật đó
31+
- **age**: int, dùng để đại diện cho tuổi của động vật đó.
32+
- Các phương thức
33+
- Phương thức khởi tạo mặc định và phương thức khởi tạo có thuộc tính.
34+
- Các phương thức **getter**, **setter****toString()**
35+
- Phương thức **input()** cho phép nhập thông tin của động vật đó.
36+
- **getYearOfBirth()**: Lấy năm sinh của động vật đó.
37+
38+
Tạo class **Cat** để biểu diễn cho tập hợp mèo. Kế thừa class **Animal**.<br> Bao gồm:
39+
- Các thuộc tính
40+
- **color**: String, dùng để đại diện cho màu lông của con mèo
41+
- **breed**: String, dùng để đại diện cho giới tính của mèo
6642
- Các phương thức:
67-
- Phương thức khởi tạo mặc định và phương thức khởi tạo có thuộc tính
68-
- Các phương thức **getter()****setter()**
69-
- Ghi đè tất cả những phương thức trừu tượng của **Student**
43+
- Phương thức khởi tạo mặc định và phương thức khởi tạo có thuộc tính.
44+
- Các **getter****setter** cho các thuộc tính **color** va **breed**
45+
- Ghi đè lại phương thức **toString()**
46+
- Phương thức **equalBreed(Cat c)** kiểm tra xem 2 con mèo các cùng giới tính không?
47+
48+
**Thực hiện các hành động sau:**
49+
- Khởi tạo thông tin 2 con mèo
50+
- In ra thông tin 2 con mèo đó
51+
- In ra năm sinh của con mèo thứ 2
52+
- Kiểm tra xem 2 con mèo có cùng giới tính không
53+
54+
55+
56+
</details>
57+
<br>
7058

7159
### Ví dụ 3
72-
Tiếp nối ví dụ 2.
73-
Tạo interface **IManager** gồm các phương thức:
74-
- void **addStudent(Student student)**: Thêm một học sinh vào danh sách.
75-
- void **editStudent(String masv, Student student)**: Sửa thông tin của một học sinh.
76-
- void **removeStudent(String masv)**: Xóa một học sinh dựa trên mã sinh viên
77-
- Student **findStudent(String masv)**: Tìm kế học sinh theo masv
78-
- void **sortByAge()**: Sắp xếp danh sách sinh viên không giảm theo tuổi
79-
- void **sortByScore()**: Sắp xếp danh sách sinh viên không giảm theo điểm trung bình.
80-
- ArrayList\<Student> **findStudent(int age)**: Tìm kế học sinh theo age
81-
- void **displayAllStudents()**: Hiển thị thông tin của tất cả học sinh trong danh sách.
60+
61+
Tạo class **Person** để biểu diễn tập hơn nhiều đối tượng người.<br> Bao gồm:
62+
- Các thuộc tính
63+
- **name**: String, dùng để đại diện cho tên của người đó
64+
- **age**: int, dùng để đại diện cho tuổi của người đó
65+
- **address** : String, dùng để đại diện cho địa chỉ của người đó.
66+
67+
- Các phương thức
68+
- Phương thức khởi tạo mặc định và phương thức khởi tạo có thuộc tính.
69+
- Các phương thức **getter**, **setter****toString()**
70+
- Phương thức **input()** cho phép nhập thông tin của người đó.
71+
- **getYearOfBirth()**: Lấy năm sinh của người đó.
72+
- **getUpperName()**: Lấy tên in hoa của người đó.
73+
- **checkAge(int n)**: Kiểm tra xem người đó đã đủ **n** tuổi chưa.
74+
75+
Tạo class **Student** để biểu diễn tập hơn nhiều đối tượng người. Kế thừa lớp **Person**<br> Bao gồm thêm:
76+
- Các thuộc tính
77+
- **studentId**: String, dùng để đại diện cho mã sinh viên của người đó
78+
- **nameSchool**: String, dùng để đại diện cho tên trường học của sinh viên đó.
79+
- Các phương thức
80+
- Phương thức khởi tạo mặc định và phương thức khởi tạo có thuộc tính.
81+
- Các **getter****setter** cho các thuộc tính **studentId****nameSchool**
82+
- Ghi đè lại phương thức **toString()****input()**
83+
- Phương thức **checkStudentId()** kiểm tra xem sinh viên đó có mã sinh viên bắt đầu bằng **23IT** không?
84+
85+
**Thực hiện các hoạt động sau:**
86+
- Cho phéo nhập vào một đối tương sinh viên.
87+
- In ra thông tính của sinh viên đó.
88+
- Kiểm tra xem sinh viên đó có đủ **18** tuổi không?
89+
- In ra tên viên hoa của sinh viên đó.
90+
- Kiểm tra sinh viên đó có phải có mã sinh viên bắt đầu bằng **23IT** không?
91+
8292

8393
### Ví dụ 4
84-
Tạo class **StudentManager** sử dụng interface **IManager**.<br>
94+
95+
Tạo class **Rectangle** dùng để biểu diễn cho các hình chữ nhật. <br> Bao gồm:
8596
- Các thuộc tính:
86-
- **students**: ArrayList\<Student\>, dùng để lưu danh sách sinh viên
97+
- **width**: float, đại diện co chiều rộng của hình chữ nhật.
98+
- **height**: float, đại diện cho chiều dài cho hình chữ nhật
99+
- Các phương thức:
100+
- Phương thức khởi tạo mặc định và phương thức khởi tạo có thuộc tính.
101+
- Các phương thức **getter**, **setter****toString()**
102+
- Phương thức **input()** cho phép nhập thông tin của hình chữ nhật.
103+
- Phương thức **getArea()** để lấy diện tích của hình chữ nhật
104+
- Phương thức **getPerimeter()** để lấy chu vi của hình chữ nhật
105+
106+
Tạo class **Square** dùng để biểu diễn các hình vuông, kế thừa lớp **Rectangle**.<br> Bao gồm:
87107
- Các phương thức:
88108
- Phương thức khởi tạo mặc định và phương thức khởi tạo có thuộc tính.
89-
- Các phương thức **getter****setter** cho **students**
90-
- Định nghĩa lại tất cả phương thức của interface **IManager**.
109+
- Các **getter****setter** cho các thuộc tính **side**
110+
- Ghi đè lại phương thức **toString()****input()**
111+
112+
**Thực hiện các thao tác sau từ trên xuông dưới:**
113+
- Khởi tạo một hình vuông có kích thước là 10
114+
- In ra thông tin của hình vuông.
115+
- In ra chu vi của hình vuông.
116+
- In ra diện tích của hình vuông.
117+
- Sửa lại kích thước hinh vuông là 20
118+
- In ra thông tin của hình vuông.
119+
- In ra chu vi của hình vuông.
120+
- In ra diện tích của hình vuông.
121+
- Nhập vào thông tin một hình vuông
122+
- In ra chu vi của hình vuông.
123+
- In ra diện tích của hình vuông.
124+
91125

92126
### Ví dụ 5
93-
Tạo Menu thực hiện được các chức năng sau:
94-
```text
95-
- 1. Hiện thị danh sách sinh viên
96-
- 2. Thêm sinh viên
97-
- 2.1. Thêm sinh viên IT
98-
- 2.2. Thêm sinh viên BA
99-
- 3. Tìm kiếm sinh viên
100-
- 3.1. Tìm theo mã sinh viên
101-
- 3.2. Tìm theo tuổi
102-
- 4. Xoá sinh viên
103-
- 5. Sắp xếp sinh viên
104-
- 5.1. Sắp xếp theo tuổi
105-
- 5.2. Sắp xếp theo điểm trung bình
106-
- 6. Chỉnh sửa thông tin sinh viên
107-
- 7. Thoát chương trình
108-
```
109127

128+
Tạo class **User** dùng để biểu diễn các người dùng trong hệ thống. <br> Bao gồm:
129+
- Các thuộc tính:
130+
- **userId**: String, dùng của diện id của người dùng.
131+
- **username**: String, dùng đại diện cho tên đăng nhập của người dùng.
132+
- **password**: String, dùng đại diện cho mật khẩu của người dùng.
133+
- **email**: String, dùng đại diện cho email của người dùng.
134+
- Các phương thức:
135+
- Phương thức khởi tạo mặc định và phương thức khởi tạo có thuộc tính.
136+
- Các phương thức **getter**, **setter****toString()**
137+
- Phương thức **input()** cho phép nhập thông tin của người dùng.
138+
139+
Tạo class **Customer** dùng để biểu diễn các khách hành, kế thừa class **User**.<br> Bao gồm:
140+
- Các thuộc tính
141+
- **shippingAddress**: String, dùng đại diện cho địa chỉ nhân hàng.
142+
- Các phương thức:
143+
- Phương thức khởi tạo mặc định và phương thức khởi tạo có thuộc tính.
144+
- Các **getter****setter** cho các thuộc tính **shippingAddress**
145+
- Ghi đè lại phương thức **toString()****input()**
146+
147+
Tạo class **Admin** dùng để biểu diễn các người quản lí, kế thừa class **User**.<br> Bao gồm:
110148

149+
- Các thuộc tính:
150+
**permissions**: ArrayList<String>, danh sách các quyền của người quản lí đó.
151+
- Các phương thức:
152+
- Phương thức khởi tạo mặc định và phương thức khởi tạo có thuộc tính.
153+
- Các **getter****setter** cho các thuộc tính **permissions**
154+
- Ghi đè lại phương thức **toString()****input()**
111155

156+
**Tạo một Menu và chương trình có các tính năng như sau**
157+
1. Thêm 1 **User**
158+
1.1. Thêm 1 **Customer**
159+
1.2. Thêm 1 **Admin**
160+
2. In ra danh sách tất cả **User**
161+
3. Sắp xếp các **User** sao cho các **Admin** ở trên các **Customer**
162+
4. Đăng nhập (Nhập và **username****password**, kiểm tra xem tài khoản này có thể đăng nhập không, nếu có thể in ra User đang đăng nhập).

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /