|
| 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** và **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** và **setter** cho các thuộc tính **color** va **breed** |
| 23 | + - Ghi đè lại phương thức **toString()** và **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** và **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** và **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** và **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** và **setter** cho các thuộc tính **studentId** và **nameSchool** |
| 82 | + - Ghi đè lại phương thức **toString()** và **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** và **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** và **setter** cho các thuộc tính **side** |
| 110 | + - Ghi đè lại phương thức **toString()** và **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** và **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** và **setter** cho các thuộc tính **shippingAddress** |
| 145 | + - Ghi đè lại phương thức **toString()** và **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** và **setter** cho các thuộc tính **permissions** |
| 154 | + - Ghi đè lại phương thức **toString()** và **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** và **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** và **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** và **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