Tổng hợp Bài tập OOP
Bài tập
Câu hỏi và Bài tập trong các
buổi học
2
Quiz
◼ Cho biểu đồ use case như sau, xác định các tác nhân
của hệ thống:
3
Bài tập làm quen UML
Bài 1. Cho:
◼ Các tác nhân: Người mua, Hệ thống E-mail, Hệ thống cho vay và Hệ
thống báo cáo tín dụng
◼ Các use case: Tìm người môi giới, Quản lý hồ sơ cá nhân, Tìm kiếm
nhà và Yêu cầu vay
◼ Các mối liên kết:
◼
◼
◼
◼
◼
◼
◼
Từ người mua tới Tìm người môi giới
Từ người mua tới Quản lý hồ sơ cá nhân
Từ người mua tới Tìm kiếm nhà
Từ người mua tới Yêu cầu vay
Quản lý hồ sơ cá nhân tới Hệ thống e-mail
Tìm kiếm nhà tới Hệ thống e-mail
Yêu cầu vay tới Hệ thống e-mail, Hꢀ thꢁng cho vay
◼
Yêu cầu vay tới Hệ thống báo cáo tín dụng
Hãy vẽ biểu đồ use case tương ứng.
4
Bài tập làm quen UML
Bài 2: Cho:
◼ Các trạng thái hành động:
◼
◼
◼
◼
Chọn hồ sơ
Tìm hồ sơ người mua
Tạo hồ sơ mới
Đăng nhập
◼ Luồng hoạt động:
◼
Bắt đầu từ Chọn hồ sơ tới Tìm hồ sơ người mua rồi đi từ
Tìm hồ sơ người mua đến Tạo hồ sơ mới nếu hồ sơ
không tồn tại. Nếu hồ sơ tồn tại thì có thể Đăng nhập.
Hãy vẽ Biểu đồ hoạt động tương ứng.
5
Bài tập làm quen UML
Bài 3: Một biểu đồ lớp gồm các lớp sau: Personal Planner Profile, Personal
Planner Controller, Customer Profile, và Buyer Record. Các lớp có các quan
hệ sau:
◼
◼
◼
◼
◼
Mỗi một đối tượng Personal Planner Profile có thể liên kết với tối
đa một đối tượng Personal Planner Controller.
Mỗi đối tượng Personal Planner Controller phải được liên kết với
một đối tượng Personal Planner Profile.
Một đối tượng Personal Planner Controller có thể được liên kết
với tối đa một đối tượng Buyer Record và Customer Profile.
Một thực thể của lớp Buyer Record có thể liên quan tới 0 hoặc 1
đối tượng Personal Planner Controller.
Có 0 hoặc 1 đối tượng Personal Planner Controller được liên kết
với mỗi thực thể Customer Profile.
Hãy vẽ biểu đồ lớp tương ứng
6
Bài tập làm quen UML
Bài 4: Biểu đồ giao tiếp hoạt động như sau:
1. Người dùng Prospective Buyer bắt đầu biểu đồ giao tiếp bằng
cách yêu cầu đối tượng Personal Planner Profile (PPF) cập nhật
một hồ sơ.
2. Đối tượng PPF yêu cầu đối tượng Personal Planner Controller
(PPC) cập nhật một hồ sơ
3. Đối tượng PPC gửi một thông điệp cho đối tượng Buyer Record
yêu cầu tìm hồ sơ.
4. Sau khi tìm xong đối tượng PPF hiển thị hồ sơ.
5. Người dùng Prospective Buyer cập nhật thông tin trong hồ sơ và
yêu cầu PPF lưu trữ thông tin vừa cập nhật.
6. Đối tượng PPF nhận thông tin mới và yêu cầu đối tượng PPC lưu
trữ thông tin mới.
7. Đối tượng PPC yêu cầu đối tượng Buyer Record cập nhật lại bản
ghi hồ sơ với những thông tin mà người dùng đã cung cấp.
Hãy vẽ biểu đồ tuần tự, biểu đồ giao tiếp tương ứng.
7
8
Bài tập 0
A
public Circle {
double radius;
public double {
F
B
return radius;
private color;
C
}
Circle() {
D
public double getArea() {
G
radius = 1.0;
color = "red";
}
return I;
}
}
E
public e(double r) {
radius = r;
color = "red";
}
Bài tập 1:
• Một phòng ban gồm có các nhân viên là cộng tác viên, nhân
viên chính thức, trưởng phòng. Mỗi nhân viên cần quản lý các
thông tin chung như:
▫ Mã nhân viên, họ tên, năm sinh, giới tính, địa chỉ, hệ số lương
(giá trị>0) và lương tối đa.
▫ Cộng tác viên có thêm thông tin về thời hạn hợp đồng (có các giá
trị: "3 tháng", "6 tháng", "1 năm") và có khoản phụ cấp lao động
được cộng thêm vào thu nhập.
▫ Nhân viên chính thức có thêm thông tin về vị trí công việc còn
lương thì tính như thông thường.
▫ Trưởng phòng có thêm thông tin về ngày bắt đầu quản lý và có
khoản phụ cấp quản lý được cộng thêm vào thu nhập.
• Hãy xác định các lớp theo mô tả trên
• Xác định các thuộc tính và phương thức của mỗi lớp, biểu
diễn bằng ký pháp UML
• Viết mã nguồn Java cho các lớp trên
10
Quiz 1
• Phương án nào là khai báo phương thức hợp lệ?
a. void method1 { /* ... */ }
b. void method2() { /* ... */ }
c. void method3(void) { /* ... */ }
d. method4() { /* ... */ }
e. method5(void) { /* ... */ }
11
Quiz 2
• Cho định nghĩa lớp như sau, thuộc tính
nào có thể truy nhập bên ngoài gói
my.project:
package my.project;
public class MyClass {
int i;
public int j;
private int l;
}
12
Quiz 3
• Cho biết kết quả biên dịch đoạn mã sau:
import java.util.*;
package com.cnpm.hust;
public class AClass {
public Other anInstance;
}
class Other {
int value;
}
Bài tập
• Bài 2: Viết khai báo một gói chứa hai lớp: lớp hình
vuông, lớp hình tròn. Viết khai báo lớp hình vuông,
lớp hình tròn cùng các thuộc tính thích hợp, các
phương thức get/set thích hợp.
• Bài 3: Viết khai báo một lớp Vector gồm 3 thành
phần với những phương thức cộng/trừ vector,
nhân với 1 hằng sꢁ, nhân vô hướng 2 vector.
13
NhanVien
Bài tập
-tenNhanVien: String
-luongCoBan: double
-heSoLuong: double
+LUONG_MAX: double
• Bài 4. Viết mã nguồn cho lớp
NhanVien như trong hình bên biết:
• Lương = Lương cơ bản * Hꢀ sꢁ lương
+tangLuong(double):b
oolean
• Phương thức inTTin() hiển thị thông
tin của đꢁi tượng NhanVien tương
ứng.
+tinhLuong(): double
+inTTin()
• Phương thức tangLuong(double) tăng hꢀ sꢁ lương hiꢀn tại lên
một lượng bằng giá trị tham sꢁ double truyền vào. Nếu điều này
làm cho lương của nhân viên > lương tꢁi đa cho phép thì không
cho phép thay đổi, in ra thông báo và trả về false, ngược lại trả về
true.
• Viết các phương thức get và set cho các thuộc tính của lớp NhanVien
14
Quiz 1
◼ Lựa chọn nào là khai báo constructor hợp lệ cho lớp
Book:
a. Book(Book b) {}
b. Book Book() {}
c. private final Book() {}
d. void Book() {}
e. public static void Book(String[]
args) {}
f. abstract Book() {}
15
Quiz 2
◼ Cho biết kết quả thực hiện đoạn mã sau:
public class MyClass {
long var;
public void MyClass(long param) {
// (1)
var = param;
}
public static void main(String[] args) {
MyClass a, b;
a = new MyClass();
// (2)
// (3)
b = new MyClass(5);
}
}
16
Bài tập 1
◼ Viết lớp Student
◼
◼
◼
name
year
1 phương thức khởi dựng
◼
Student(String name, int year)
◼
◼
Tự tạo phương thức getter, setter cho đủ dùng
Đảm bảo đóng gói, che dấu dữ liệu
◼ Lớp Test
◼
◼
◼
Nhập số phần tử cho mảng Student (trong 1 lớp học)
Nhập lần lượt các Student
In ra danh sách tên Student trong lớp và hiển thị tổng số
tuổi của các Student
17
Student.java
package example;
public class Student {
private int year;
private String name;
public Student(int year, String name) {
this.year = year;
this.name = name;
}
public int getYear() {
return year;
}
public String getName() {
return name;
}
18
}
Test.java
package example;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
Student[] cls = new Student[N];
for (Student s: cls){
String name = scanner.next();
int year = scanner.nextInt();
s = new Student(year, name);
}
int total = 0;
System.out.println("Danh sach lop: ");
for (int i=0; i<N; ++i){
total += 2019-cls[i].getYear();
System.out.println(cls[i].getName());
}
System.out.println("Tong so tuoi: " + total);
}
19
}
NhanVien
-tenNhanVien: String
-luongCoBan: double
-heSoLuong: double
+LUONG_MAX: double
+tangLuong(double):boolean
+tinhLuong(): double
+inTTin()
Bài tập 2
◼ Viết mã nguồn cho lớp NhanVien
(đã làm)
◼ Viết phương thức khởi tạo với các
tham số cần thiết để khởi tạo cho
các thuộc tính của lớp NhanVien.
◼ Viết lớp TestNV trong đó tạo ra 2 đối tượng của lớp
NhanVien, thực hiện truyền thông điệp đến các đối tượng
vừa tạo để hiển thị thông tin, hiển thị lương, tăng lương...
20
Tải về để xem bản đầy đủ
Bạn đang xem 20 trang mẫu của tài liệu "Tổng hợp Bài tập OOP", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
- tong_hop_bai_tap_oop.pdf