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 7f24f63

Browse files
committed
Add readme.md with examples of abstraction in object-oriented programming
1 parent 890a1c3 commit 7f24f63

File tree

1 file changed

+111
-0
lines changed

1 file changed

+111
-0
lines changed
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
<div align="center">
2+
3+
# Tính trừu tượng trong lập trình hướng đối tượng
4+
5+
</div>
6+
7+
### 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:
20+
- 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
24+
- 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**
28+
29+
Tạo class **Rectangel** kế thừa class **Shape**<br> Bao gồm:
30+
- 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.
33+
- 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**
37+
38+
### 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**
61+
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
66+
- 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**
70+
71+
### 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.
82+
83+
### Ví dụ 4
84+
Tạo class **StudentManager** sử dụng interface **IManager**.<br>
85+
- Các thuộc tính:
86+
- **students**: ArrayList\<Student\>, dùng để lưu danh sách sinh viên
87+
- Các phương thức:
88+
- 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**.
91+
92+
### 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+
```
109+
110+
111+

0 commit comments

Comments
(0)

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