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 aa13a9f

Browse files
committed
Add readme.md with examples of inheritance in object-oriented programming
1 parent 7462b96 commit aa13a9f

File tree

1 file changed

+193
-0
lines changed

1 file changed

+193
-0
lines changed
Lines changed: 193 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,193 @@
1+
<div align="center">
2+
3+
# Tính kế thừa trong lập trình hướng đối tượng
4+
</div>
5+
6+
### Ví dụ 1
7+
8+
Tạo class **ElectronicDevice** đùng để biểu diễn cho các thiết bị điện tử. <br>Bao gồm:
9+
- Các thuộc tính:
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ử.
12+
- Các phương thức:
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ử đó.
16+
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:
18+
- Các thuộc tính:
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 đó.
20+
- Các phương thức:
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+
25+
26+
### Ví dụ 2
27+
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
42+
- Các phương thức:
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>
58+
59+
### Ví dụ 3
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+
92+
93+
### Ví dụ 4
94+
95+
Tạo class **Rectangle** dùng để biểu diễn cho các hình chữ nhật. <br> Bao gồm:
96+
- Các thuộc tính:
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:
107+
- Các phương thức:
108+
- 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.
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+
125+
126+
### Ví dụ 5
127+
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:
148+
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()**
155+
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).
163+
164+
165+
### Ví dụ 6
166+
167+
Tao một **Class** để biểu diễn các đối tượng **Time** gồm các thuộc tính:
168+
- **hour: int**, dùng dể đại diện cho giờ
169+
- **minute: int**, dùng dể đại diện cho phút
170+
- **second: int**, dùng dể đại diện cho giây
171+
172+
Viết các phương thức bao gồm phương thức khởi tạo mặc định, phương thức khởi tạo có thuộc tính và các phương thức **getter**, **setter****toString()**.
173+
174+
- Viết hàm nextSecond() để tăng thời gian hiện tại lên 1 giây.
175+
- Viết hàm nextMinute() để tăng thời gian hiện tại lên 1 phút.
176+
- Viết hàm nextHour() để tăng thời gian hiện tại lên 1 giờ.
177+
178+
Tạo class DateTime để biểu diễn thời gian hiện tại, kế thừa lớp **Time**.
179+
180+
Có thêm các thuộc tính:
181+
- **day: int**, dùng để đại diện cho ngày
182+
- **month: int**, dùng để đại diện cho tháng
183+
- **year: int**, dùng để đại diện cho năm
184+
185+
Viết các phương thức bao gồm phương thức khởi tạo mặc định, phương thức khởi tạo có thuộc tính và các phương thức **getter**, **setter****toString()**.
186+
187+
- Viết hàm nextDay() để tăng thời gian hiện tại lên 1 ngày.
188+
- Viết hàm nextMonth() để tăng thời gian hiện tại lên 1 tháng.
189+
- Viết hàm nextYear() để tăng thời gian hiện tại lên 1 năm.
190+
191+
Ghi đè phương thức nextHour(), nếu giờ hiện tại là 23 thì giờ sẽ trở về 0 và tăng ngày lên 1.
192+
193+
**Lưu ý**: Các hàm next() sẽ tăng thêm 1 nếu giá trị hiện tại nhỏ hơn giá trị lớn nhất, nếu giá trị hiện tại lớn hơn giá trị lớn nhất thì giá trị hiện tại sẽ trở về 0 và tăng giá trị tiếp theo lên 1.

0 commit comments

Comments
(0)

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