You are on page 1of 14

Bài tập thực hành Lập trình hướng đối tượng Khoa HTTT&VT- Bộ môn CNPM

BÀI TẬP THỰC HÀNH - LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG


BUỔI THỰC HÀNH 1
Mục tiêu:
- Thành thạo sử dụng ngôn ngữ lập trình Java.
- Rèn luyện kỹ năng sử dụng các kiểu dữ liệu, khai báo và sử dụng biến, hằng,
chuỗi, mảng.
- Rèn luyện kỹ năng sử dụng các phép toán số học, luận lý, so sánh, …
- Rèn luyện kỹ năng lập trình sử dụng cấu trúc điều khiển.
- Sử dụng các biến lớp và phương thức lớp (static).
- Sử dụng kỹ thuật nhập xuất chuẩn.
Nội dung thực hành:
1. Viết chương trình in tên, ngày sinh, mã số sinh viên của bạn.
2. Viết chương trình tính diện tích hình chữ nhật với chiều cao và chiều rộng do
người dùng cung cấp.
3. Viết chương trình chuyển nhiệt độ từ độ F sang độ C. (oC = (oF - 32) / 1,8)
4. Viết chương trình để kiểm tra xem một năm có phải là năm nhuận hay không.
(năm nhuận chính xác là năm chia hết cho 4, ngoại trừ những năm chia hết cho
100, hoặc chia hết cho 400).
5. Viết chương trình tìm giá trị nhỏ nhất giữa ba số.
6. Viết chương trình nhập các cạnh của tam giác và kiểm tra xem tam giác có hợp
lệ hay không.
7. Viết chương trình nhập điểm 5 môn Lý, Hóa, Sinh, Toán, Máy tính. Tính tỷ lệ
phần trăm và hạng như sau:
Tỷ lệ> 90%: Hạng A
Tỷ lệ> 80%: Hạng B
Tỷ lệ> 70%: Hạng C
Tỷ lệ> 60%: Hạng D
Tỷ lệ> 40%: Hạng E
Tỷ lệ phần trăm <40%: Hạng F
8. Viết hàm tìm chữ số đầu tiên và hàm tìm chữ số tận cùng của một số.
9. Viết hàm tính tổng các chữ số và hàm tính tích các chữ số của một số.
10. Viết hàm đếm số chữ số trong một số.
11. Viết hàm đảo ngược số nguyên đầu vào.
12. Viết một hàm để kiểm tra xem một số có phải là số đối xứng hay không.
13. Viết chương trình nhập vào một chuỗi, đếm số từ trong chuỗi.
14. Viết chương trình nhập vào một chuỗi dạng Họ và Tên, tách riêng ra thành 3
phần Họ, Tên, Tên đệm.
15. Viết chương trình nhập vào một ngày, tách ra riêng từng phần ngày, tháng và
năm.

TRANG 1
Bài tập thực hành Lập trình hướng đối tượng Khoa HTTT&VT- Bộ môn CNPM

BUỔI THỰC HÀNH 2


Mục tiêu:
- Rèn luyện kỹ thuật lập trình với mảng 1 chiều, 2 chiều.
- Rèn luyện kỹ năng xây dựng các lớp đối tượng.
- Thực hành khai báo các data field, contructor, properties get và set, method.
- Sử dụng các modifier private, public, protected.
Nội dung thực hành:
1. Viết chương trình thực hiện các yêu cầu sau:
a. Nhập mảng một chiều các số nguyên.
b. Xuất các phần tử mảng ra cửa sổ xuất chuẩn.
c. Tìm vị trí của một số nguyên x trong mảng.
d. Tìm giá trị lớn nhất trong mảng.
e. Tìm giá trị nhỏ nhất trong mảng.
f. Tìm vị trí phần tử có giá trị lớn nhất trong mảng.
g. Sắp xếp mảng tăng dần.
2. Viết chương trình thực hiện các yêu cầu sau:
a. Tạo và nhập giá trị các phần tử cho ma trận.
b. In ma trận ra cửa sổ xuất chuẩn.
c. Cộng 2 ma trận cùng kích thước.
d. Nhân 2 ma trận.
3. Viết code định nghĩa các lớp theo thiết kế như sau:
- Lớp Point2D định nghĩa đối tượng điểm trong mặt phẳng 2 chiều.

- Lớp Triangle định nghĩa một tam giác với chiều dài cạnh đáy và chiều cao.

TRANG 2
Bài tập thực hành Lập trình hướng đối tượng Khoa HTTT&VT- Bộ môn CNPM

- Lớp Fraction định nghĩa một phân số với hai thành phần tử số và mẫu số

4. Tạo một Project để định nghĩa và hiện thực các lớp đối tượng theo thiết kế như
sau:
Student
-stID: String
-stName: String
-stClass: String
+Student()
+Student(stID: String, stName: String, stClass: String)
+Student(Student st)
+getStID(): String
+getStName(): String
+getStClass(): String
+setStID(id: String): void
+setStName(name: String): void
+setStClass(class: String): void
+toString(): String

Book
-boCode: String
-boTitle: String
-boAuthor: String
+ Book ()
+ Book (boCode: String, boTitle: String, boAuthor: String)
+ Book (bo: Book)
+getboCode(): String
+getBoTitle(): String
+getBoAuthor(): String

TRANG 3
Bài tập thực hành Lập trình hướng đối tượng Khoa HTTT&VT- Bộ môn CNPM

+setBoCode(code: String): void


+setBoTitle (title: String): void
+setBoAuthor(authorname: String): void
+toString(): String

LibraryCard
-lbCode: long
-owner: String
-borrowCount: int
+ LibraryCard ()
+ LibraryCard (lbCode: long, owner: String, borrowCount: int)
+getLbCode(): long
+getOwner(): String
+getBorrowCount(): int
+setLbCode (code: long): void
+setOwner (owner: String): void
+checkOut(num: int): void
+toString(): String

BUỔI THỰC HÀNH 3


Mục tiêu:
- Rèn luyện kỹ năng lập trình hướng đối tượng với đặc trưng kế thừa.
- Xây dựng các lớp Abstract.
- Xây dựng các Interface.
Nội dung thực hành:
1. Viết code định nghĩa các lớp theo thiết kế sau đây và hiện thực hóa trong main
class.

TRANG 4
Bài tập thực hành Lập trình hướng đối tượng Khoa HTTT&VT- Bộ môn CNPM

2. Triển khai chương trình dựa trên sơ đồ sau:

3. Cho 2 lớp được thiết kế theo sơ đồ sau đây, hãy triển khai chương trình:

TRANG 5
Bài tập thực hành Lập trình hướng đối tượng Khoa HTTT&VT- Bộ môn CNPM

4. Xây dựng chương trình theo thiết kế như sau:

5. Thực hiện lớp Nhân viên để lưu trữ thông tin của các nhân viên trong công ty
sản xuất ABC.
Attributes:
- ID: String
- fullName: String
- yearJoined: int

TRANG 6
Bài tập thực hành Lập trình hướng đối tượng Khoa HTTT&VT- Bộ môn CNPM

- coefficientsSalary: double
- numDaysOff: int (số ngày nghỉ trong tháng)
Constructors:
- Constructor không tham số Employee() (ID = 0, fullName = ””, yearJoined =
2020,
coefficientsSalar = 1.0, numDaysOff = 0)
- Constructor có tham số Employee(ID: String, fullName: String,
coefficientsSalary:
double) (yearJoined = 2020, numDaysOff = 0)
- Constructor với đầy đủ tham số.
Methods:
- public double getSenioritySalary(): Tính lương thâm niên của người lao động:
Biết rằng nếu người lao động làm việc từ 5 năm trở lên thì lương thâm niên được
tính theo công thức sau: seniority salary = years of work * basic salary / 100
- public String considerEmulation(): viết phương thức đánh giá thi đua nhân
viên. Nếu số ngày nghỉ <= 1 được xếp loại A, thì số ngày nghỉ <= 3 được xếp loại
C.
- pulic double getSalary(): viết một phương thức tính lương cho nhân. Biết rằng
lương đó được tính bằng cách sử dụng công thức sau đây với basic salary = 1150:
salary = basic salary * salary coefficient * emulation coefficient + seniority salary
• Nếu xếp loại A: emulation coefficient = 1.0
• Nếu xếp loại B: emulation coefficient = 0.75
• Nếu xếp loại C: emulation coefficient = 0.5

TRANG 7
Bài tập thực hành Lập trình hướng đối tượng Khoa HTTT&VT- Bộ môn CNPM

BUỔI THỰC HÀNH 4


MỤC TIÊU:
- Thực hành về trừu tượng và đa hình
- Thực hành sử dụng Interface
- Sử dụng các bộ thu thập dữ liệu
NỘI DUNG THỰC HÀNH:
1. Xây dựng chương trình java gồm các lớp sau đây và viết lớp main để hiện thực
và kiểm tra các lớp.

TRANG 8
Bài tập thực hành Lập trình hướng đối tượng Khoa HTTT&VT- Bộ môn CNPM

2. Xây dựng Interface Movable và các lớp triển khai của nó là MovablePoint và
MovableCircle

3. Interface GeometricObject and Resizable

TRANG 9
Bài tập thực hành Lập trình hướng đối tượng Khoa HTTT&VT- Bộ môn CNPM

4. Các bộ thu thập dữ liệu:


Generics: Một cơ chế để chỉ định giải pháp mà không buộc nó vào một kiểu dữ liệu cụ
thể.
Quy ước đặt tên kiểu chung:
E – Element
K – Key
V – Value
T – Type
Các phương thức Generics: có thể viết một khai báo phương thức chung duy nhất có
thể được gọi với các đối số thuộc các kiểu khác nhau.
Ví dụ:
public class GenericMethod {
public static <E> void printArray( E[] inputArray ) {
for(E element : inputArray) {
System.out.printf("%s ", element);
}
System.out.println();
}
}

public class Test {


public static void main(String[] args) {
Box<Integer> integerBox = new Box<Integer>();
Box<String> stringBox = new Box<String>();
integerBox.set(new Integer(10));
stringBox.set(new String("Hello World"));
System.out.printf("Integer Value :%d\n\n", integerBox.get());
System.out.printf("String Value :%s\n", stringBox.get());
}
}

ArrayList: là một lớp mảng có thể thay đổi kích thước, thuộc gói java.util
Khởi tạo:
ArrayList()
ArrayList(Collection coll)
ArrayList(int capacity)

TRANG 10
Bài tập thực hành Lập trình hướng đối tượng Khoa HTTT&VT- Bộ môn CNPM

Các phương thức:


add(Object obj)
add(int index, Object obj)
get(int index)
set(int index, E element)
remove(int index)
remove(Object obj)
clear()
size()

Ví dụ sử dụng ArrayList
import java.util.ArrayList;
public class Test2 {
public static void main(String[] args) {
ArrayList mylist = new ArrayList();
mylist.add(10);
mylist.add("Hello");
mylist.add(true);
mylist.add(15.75);
int i = (Integer)mylist.get(0);
String s = (String)mylist.get(1);
boolean b = (boolean)mylist.get(2);
double d = (double)mylist.get(3);
System.out.println("1st element: " + i);
System.out.println("2nd element: " + s);
System.out.println("3rd element: " + b);
System.out.println("4th element: " + d);
}
}

import java.util.*;
class Test {
public static void main(String[] args) {
int n = 5;
ArrayList<Integer> arrlist = new ArrayList<Integer>(n);
for (int i=1; i<=n; i++)

TRANG 11
Bài tập thực hành Lập trình hướng đối tượng Khoa HTTT&VT- Bộ môn CNPM

arrlist.add(i);
System.out.println(arrlist);
arrlist.remove(3);
System.out.println(arrlist);
for (int i=0; i<arrlist.size(); i++)
System.out.print(arrlist.get(i)+" ");
}
Vector:
Lớp Vector thực hiện một mảng các đối tượng có thể phát triển
Khởi tạo:
Vector()
Vector(int size)
Vector(int size, int incr)
Vector(Collection coll)
Các phương thức:
isEmpty()
size()
add(E el)
add(int index, E el)
remove(int index)
remove(Object obj)
get(int index)
indexOf(Object obj)
contains(Object obj)

Ví dụ sử dụng Vector
import java.util.Vector;
public class TestVector {
public static void main(String[] args) {
Vector<String> courses = new Vector<String>();
courses.add("501043");
courses.add(0, "501042");
courses.add("502043");

TRANG 12
Bài tập thực hành Lập trình hướng đối tượng Khoa HTTT&VT- Bộ môn CNPM

System.out.println(courses); // [501042, 501043, 502043]


System.out.println("At index 0: " + courses.get(0)); // At index 0: 501042
if (courses.contains("501043"))
System.out.println("501043 is in courses");
courses.remove("501043");
for (String c: courses)
System.out.println(c);
// 501042
// 502043
}
}

BUỔI THỰC HÀNH 5


EXCEPTION, FILE HANDLING, NESTED CLASS, DESIGN PATTERN
MỤC TIÊU:
- Thực hành xử lý biệt lệ
- Thực hành thao tác với file
- Thực hành lớp lồng nhau
- Thực hành các mẫu thiết kế
Bài 1:
Tạo lớp Calculator với hai phương thức sau:
- public double divide(int a, int b)
- public int multiply(int a, int b)
Thực hiện các biệt lệ sau:
- Nếu tham số b=0, phương thức sẽ ném ra một biệt lệ là ArithmeticException
với thông báo “devide by zero”.
- Nếu giá trị của a và b nằm ngoài vùng [-1000, 1000], phương thức sẽ ném ra
một biệt lệ là NumberOutOfRangeException với thông báo “Number is
outside the
computation”. Trong đó NumberOutOfRangeException là biệt lệ do sinh
viên thiết kế.
Bài 2:
Viết một chương trình Java:
- Đọc tất cả nội dung từ một file input.txt
- Sau đó chuyển thành chữ in hoa tất cả nội dung và ghi vào file output.txt

TRANG 13
Bài tập thực hành Lập trình hướng đối tượng Khoa HTTT&VT- Bộ môn CNPM

Bài 3:
Viết chương trình có lớp Student chứa thông tin về tên, địa chỉ, giới tính, điểm.
Student có một Nested Class StudentOperation, nó có 2 phương thức print() và type():
- Phương thức print() sẽ in ra thông tin Student
Student [" name "," address "," sex "," score "]
- Phương thức type sẽ trả về xếp loại với kiểu dữ liệu là String
nếu điểm>8, trả về loại A,
nếu 5<= điểm <=8, trả về loại B,
nếu điểm <5, trả về loại C
Bài 4:
Thực hiện chương trình Java với biểu đồ sau đây:
Trong đó phương thức move():
- Nếu vehicle là car thì in ra màn hình thông báo “Car is moving”
- Nếu vehicle là truck thì in ra màn hình thông báo “Truck is moving”

TRANG 14

You might also like