Tổng hợp BT môn Lập trình Hướng đối tượng | Trường Đại học Bách Khoa Hà Nội
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.
Môn: Lập trình hướng đối tượng hust
Trường: Đại học Bách Khoa Hà Nội
Thông tin:
Tác giả:
Preview text:
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 public class A Circle { public double getRadius F () { private B double radius; return radius; private String C color; } public D Circle() { public double getArea() { radius = 1.0; return radius*radius* G Math.PI; color = "red"; } } } public Circl E 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
• Bài 4. Viết mã nguồn cho lớp +LUONG_MAX: double
NhanVien như trong hình bên biết: +tangLuong(double):b
• Lương = Lương cơ bản * Hệ số lương oolean
• Phương thức inTTin() hiển thị thông +tinhLuong(): double
tin của đối tượng NhanVien tương ứng. +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) b = new MyClass(5); // (3) } } 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; itotal += 2019-cls[i].getYear();
System.out.println(cls[i].getName()); }
System.out.println("Tong so tuoi: " + total); } 19 } Bài tập 2 NhanVien -tenNhanVien: String -luongCoBan: double ◼
Viết mã nguồn cho lớp NhanVien (đã làm) -heSoLuong: double +LUONG_MAX: double
+tangLuong(double):boolean ◼
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 +tinhLuong(): double
các thuộc tính của lớp NhanVien. +inTTin() ◼
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