1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÀI tập môn lập TRÌNH HƯỚNG đối TƯỢNG (OJBECT ORIENTED PROGRAMMING EXERCISES) làm QUEN với ECLIPSE IDE

51 2 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Làm Quen Với Eclipse IDE
Trường học Đại học Sư phạm Kỹ thuật TP.HCM
Chuyên ngành Lập Trình Hướng Đối Tượng
Thể loại Bài tập
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 51
Dung lượng 3,32 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • Module 0. LÀM QUEN VỚI ECLIPSE IDE (3)
  • Module 1. JAVA CĂN BẢN (13)
  • Module 2. CÁC KHÁI NIỆM CƠ BẢN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG (21)
  • Module 3. KẾ THỪA – ĐA HÌNH (37)
  • Module 4. TẬP HỢP (45)

Nội dung

Làm quen với Eclipse IDE Bài tập Lập trình hướng đối tượng - Trang 4 Nhấn Finish.. Bài tập Lập trình hướng đối tượng - Trang 5 Nhấn nút Browse để tìm đến thư mục chứa project.. Làm quen

LÀM QUEN VỚI ECLIPSE IDE

 Làm quen với công cụ lập trình Java (Eclipse)

 Tạo workspace (nơi lưu project), tạo project, tạo package

 Máy tính phải được cài đặt sẵn JDK (Java Development Kit)

 Máy tính phải có sẵn phần mềm hỗ trợ soạn thảo mã nguồn Java: Eclipse

Khi lần đầu khởi động Eclipse, bạn sẽ thấy cửa sổ Workspace Launcher yêu cầu chọn vị trí lưu trữ các dự án Trong những lần mở tiếp theo, Eclipse sẽ tự động nhớ và mở lại workspace đã chọn Bạn cũng có thể thay đổi workspace này khi cần.

Vào File  Switch Workspace  chọn workspace cần mở

1 Tạo project mới: Menu File->New->Java Project Nếu không có thì chọn File->New->Project…

Module 0 Làm quen với Eclipse IDE

Bài tập Lập trình hướng đối tượng - Trang 4

Nhấn Finish Kết quả trong Package Explorer

Eclipse does not support direct project opening, so the typical "double-click-to-open" method is unavailable However, you can reopen an existing project using one of the following methods: a Open from the workspace.

Khởi động Eclipse  chọn workspace cần mở Hoặc File->Switch workspace b Mở từ project:

Vào menu File->Import rồi chọn như hình

Bài tập Lập trình hướng đối tượng - Trang 5

Nhấn nút Browse để tìm đến thư mục chứa project Chọn project cần import rồi nhấn Finish

Nên tạo các package để tổ chức và lưu trữ các lớp Java, giúp nhóm các class có mối quan hệ gần gũi vào cùng một package.

Mỗi ứng dụng có thể bao gồm nhiều package, và mỗi package lại chứa nhiều class Tên của các package được đặt theo định dạng a.b.c, trong đó a, b, c có thể là bất kỳ ký tự nào Ví dụ, tên package chuong01.tuan01.bai01 sẽ dẫn đến việc Eclipse tạo ra ba thư mục lồng vào nhau: chuong01\tuan01\bai01.

Lưu ý: chữ cái đầu tiên của tên package luôn viết thường

Module 0 Làm quen với Eclipse IDE

Bài tập Lập trình hướng đối tượng - Trang 6

Tạo lớp mới bằng cách nhấn phải chuột lên package cần thêm lớp vào, chọn New  Class

Chú ý: Tên lớp luôn bắt đầu bằng 1 ký tự hoa Đặt theo kiểu TitleCase

Bắt đầu viết code Eclipse hỗ trợ cơ chế code completion rất tốt Các bạn luôn nhờ phím Ctrl-SpaceBar để Eclipse hiện lên các suggestion

Bài 6 Thực thi chương trình

Nhấn chuột phải lên lớp cần chạy, chọn menu Run As-> Java Application

Bài tập Lập trình hướng đối tượng - Trang 7

Hoặc nhấn F11 để chạy tập tin hiện tại, còn Ctrl+F11 biên dịch và chạy toàn bộ project

Eclipse sẽ tự động biên dịch code và báo lỗi

Nếu bạn có lỗi hay warning thì bên trái của dòng lỗi Ví dụ như sau:

Bài 7 Chọn loại giao diện làm việc

2 Chọn Windows\Open Perspective\Other

Module 0 Làm quen với Eclipse IDE

Bài tập Lập trình hướng đối tượng - Trang 8 Đóng Welcome screen Kết quả

Bài 8 Đổi tên (project, package, class…)

Nhấn chọn tên cần đổi ở cửa sổ Package Explorer  F2  gõ tên mới là xong

Bài 9 Vấn đề gõ tiếng Việt (Unicode)

Java hỗ trợ gõ tiếng Việt nhờ sử dụng bảng mã Unicode Để có thể gõ tiếng Việt một cách chính xác, bạn cần đảm bảo rằng dự án của mình được lưu với định dạng mã hóa UTF-8.

To enable Unicode support for your project, right-click on the Project and select Properties, then choose the Resources section This allows your project to utilize Unicode To set Unicode as the default for all future projects, navigate to the Window menu, select References, and then choose General followed by Workspace.

Bài tập Lập trình hướng đối tượng - Trang 9

Nhấn Apply Từ đây, bất cứ project nào tạo ra đều hỗ trợ Unicode

Bài 10 Export file jar tự chạy (executable jar file)

Nhấn chuột phải lên Project cần export, chọn Export

Chọn Runnable JAR file như hình Nhấn Next

Chọn Lauch configuration Chọn thư mục chứa cũng như tên file jar Nhấn Finish

Thực thi jar file dưới dạng command-line:

Module 0 Làm quen với Eclipse IDE

Bài tập Lập trình hướng đối tượng - Trang 10

Nếu Project của ở cơ chế GUI thì có thể mở file jar của bằng Java Plaform SE library như hình

Bài 11 Thêm thư viện cho Project

1 Thêm thư viện jar Để thêm thư viện Jar mình thường làm theo 2 bước sau

 Tạo thự mục chứa File jar ( thường để tên là lib ) -> copy file jar và thư viện đó

 Thực hiện add jar file bằng cách : chọn chuột phải file jar -> Build Path -> Add to Build Path là xong ( như hình bên dưới )

Vào phần Referenced Libraries -> chọn chuột phải vào File jar -> Build Path -> Remove from Build Path là xong

2 Thêm thư viện ngoài , refer source code

Bài tập Lập trình hướng đối tượng - Trang 11

Chọn Build Path -> Configure Build Path

Source : Phần này bạn có thể add một folder source hoặc là link đến thư mục source nào đó

Project : Tương tự như source nhưng đây là refer sang một project cùng workspace

Bài 12 Phím tắt hay dùng

1 Một số editing template hay dùng:

Gõ main sau đó nhấn Ctrl-Spacebar sẽ cho public static void main(String[] args) {}

Gõ sysout sau đó nhấn Ctrl-Spacebar sẽ cho System.out.println(); Để tìm hiểu thêm, vào menu Window->Reference

Module 0 Làm quen với Eclipse IDE

Bài tập Lập trình hướng đối tượng - Trang 12

2 Các phím tắt hay dùng:

Sử dụng phím tắt trong Eclipse giúp tăng tốc độ thao tác và tạo ấn tượng chuyên nghiệp hơn Để xem danh sách phím tắt, bạn có thể vào menu Help -> Key Assist hoặc nhấn tổ hợp Ctrl-Shift-L.

Bài tập Lập trình hướng đối tượng - Trang 13

JAVA CĂN BẢN

 Hiểu được cấu trúc chương trình Java, cách biên dịch và chạy chương trình

 Hiểu và áp dụng được nhập-xuất dữ liệu, các toán tử

 Hiểu và áp dụng được các cấu trúc điều khiển, cấu trúc lặp

 Viết và gọi phương thức trong Java

 Bài làm lưu trong workspace có tên MaSV_HoTen

 Lần lượt tạo các package phan01, phan02, phan03 ứng với 3 phần của Module 1

 Mỗi bài tập là một class với tên tương ứng với bài đó, ví dụ Bai01, Bai02,…

Cấu trúc cơ bản của một chương trình Java bao gồm các phần sau: đầu tiên là khai báo tên gói với cú pháp `package packageName;`, tiếp theo là khai báo thư viện cần thiết bằng `import java.util.Scanner;`, và cuối cùng là khai báo tên lớp với cú pháp `public class ClassName`, trong đó tên lớp phải trùng với tên file.

/* các ghi chú liên quan */ int var; //Các khai báo biến/thuộc tính của lớp public void methodName() //Viết các phương thức

/* phần thân của phương thức */

//Các lệnh thực hiện cho mục tiêu phương thức

} public static void main(String[] args) //Hàm chính để chạy chương trình

Bài tập Lập trình hướng đối tượng - Trang 14

Viết chương trình xuất ra màn hình dòng chữ “Hello World!”

Hướng dẫn sử dụng lệnh xuất:

 Sytstem.out.print(): xuất ra màn hình một chuỗi hay một giá trị (không xuống dòng)

 Sytstem.out.println(): xuất ra màn hình một chuỗi hay một giá trị (có xuống dòng)

 Sytstem.out.printf(): xuất ra màn hình một chuỗi theo định dạng tương tự như ngôn ngữ lập trình

C++ Cú pháp: System.out.printf(“format-string”, [arg1, arg2, arg3, …]);

- %d: số nguyên (byte, short, int, long)

- Độ chính xác của số thực: %5.3f: độ chính xác phần lẻ của số trong format-string là 3

- Dấu – dùng để canh trái, mặc định canh phải

- Một số ký tự đặc biệt: \a, \b, \f, \n, \r, \t, \v, \\

Mục tiêu: Làm quen với việc nhập-xuất trong Java

Bài tập Lập trình hướng đối tượng - Trang 15

Viết chương trình nhập vào tên của mình và xuất ra màn hình “Hello + Tên”

 Để nhập dữ liệu từ bàn phím, dùng lớp Scanner: import java.util.Scanner;

Scanner sc = new Scanner(System.in);

 Dữ liệu nhập vào là số nguyên: int a = sc.nextInt();

 Dữ liệu nhập vào là số thực: double b = sc.nextDouble();

 Dữ liệu nhập vào là chuỗi:

Thao tác với toán tử số học

Thao tác với toán tử nối chuỗi

Mục tiêu: Làm quen với việc sử dụng toán tử

Bài tập Lập trình hướng đối tượng - Trang 16

Thao tác với toán tử 1 ngôi

Thao tác với toán tử pre-increment và post-increment

Kết quả và giải thích?

Thao tác với các toán tử quan hệ, toán tử so sánh trong ngôn ngữ lập trình Java

Bài tập Lập trình hướng đối tượng - Trang 17

Kết quả và giải thích?

Thao tác với toán tử điều kiện

PHẦN 3: CẤU TRÚC LẶP VÀ ĐIỀU KHIỂN

Cấu trúc if-else, switch case

Mục tiêu: Làm quen với việc sử dụng các cấu trúc điều khiển

 Cấu trúc if, if else

 Cấu trúc lặp: for, while, do while

Bài bắt buộc : 316 (yêu cầu viết phương thức để xử lý)

Bài tập Lập trình hướng đối tượng - Trang 18

Cấu trúc while, do while và for

Phát sinh số ngẫu nhiên dùng lớp Random Lớp Random nằm trong gói java.util, một số phương thức:

The method produces a boolean value with `nextBoolean()`, returning either true or false The `nextInt()` method generates an integral value within the range of Integer.MIN_VALUE to Integer.MAX_VALUE Additionally, `nextLong()` provides a long integral value that falls between Long.MIN_VALUE and Long.MAX_VALUE.

The `nextFloat()` method generates a decimal number ranging from 0.0 (inclusive) to 1.0 (exclusive), while the `nextDouble()` method produces a similar decimal number within the same range To utilize these methods, the `java.util.Random` package must be imported The example is demonstrated in the `RandomExercise` class within the `main` method.

Random rd = new Random(); int n = rd.nextInt();

System out println("Random number: " + n);

Phát sinh số ngẫu nhiên nằm trong một vùng (min, max) int min = 65, max = 80;

Random r = new Random(); int i1 = r.nextInt(max - min + 1) + min;

Lưu ý: Nếu r.nextInt(max)sẽ trả về giá trị giữa 0 và max

Viết chương trình in ra tổng 1+3+5+…+n nếu n là số lẻ, 2+4+6+…+n nếu n là số chẵn

Viết chương trình giải phương trình bậc 1

Viết chương trình tìm USCLN của 2 số nhập vào

Viết chương trình kiểm tra số nhập vào có phải là số nguyên tố hay không

Tính tổng các số nguyên tố nhỏ hơn N

Viết chương trình in ra số lần kí tự ‘a’ xuất hiện trong một chuỗi

Viết hàm tách chuỗi gốc thành chuỗi con

VD: chuỗi gốc S = “ Lap Trinh HDT”, chuỗi sau khi tách là

HD: Dùng hàm Split của lớp String

Viết chương trình để đếm số lượng ký tự là số có trong chuỗi s Chuỗi s được nhập từ bàn phím

HD: Dùng mã ASCII để kiểm tra hoặc dùng class Character: Character.isDigit(ký tự) để kiểm ký tự có phải là số hay không

Viết chương trình nhập vào số nguyên n và thực hiện: Xuất ra màn hình n số đầu tiên của chuỗi Fibonaci (có hai giá trị đầu là 1 và 1)

Viết chương trình in ra những số lẻ từ 1 đến 99

Bài tập Lập trình hướng đối tượng - Trang 20

Viết chương trình in ra tổng của 10 số chẵn đầu tiên

Viết chương trình cho nhập vào 1 mảng số nguyên và kiểm tra xem có giá trị k nào đó hay không

Viết chương trình cho nhập vào 1 mảng số nguyên, tìm giá trị lớn nhất và nhỏ nhất của mảng

Viết chương trình để nhập vào một mảng các chuỗi và kiểm tra xem có chuỗi nào trong mảng hay không Đồng thời, xây dựng chương trình để xuất ra các hình dạng khác nhau bằng cách sử dụng cấu trúc lặp.

Bài tập Lập trình hướng đối tượng - Trang 21

CÁC KHÁI NIỆM CƠ BẢN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

 Cài đặt lớp đối tượng

 Tạo, sử dụng đối tượng

 Định nghĩa getter/setter cho thuộc tính (kiểm tra ràng buộc trên thuộc tính nếu có)

 Tạo constructor có kiểm soát tham số truyền cho thuộc tính

 Tạo cơ chế liên lạc giữa các lớp

 Ghi chú cho lớp, phương thức (theo dạng document)

 Bài làm lưu trong workspace có tên MaSV_HoTen

 Mỗi bài làm trong một package có tên package là bai01, bai02,…

 Viết documentation comment cho class Định nghĩa một lớp trong UML:

Cách truy xuất (visibility): public + private - protected # package ~ public class Car { private String carColor; private double carPrice = 0.0; public String getCarColor(String model) { return carColor;

} public double getCarPrice(String model) { return carPrice;

Module 2 Các khái niệm cơ bản LT HĐT

Bài tập Lập trình hướng đối tượng - Trang 22

Biết lớp tọa độ ToaDo có:

 Các thuộc tính: x, y và tên

 Các phương thức set, get thông tin của x, y và tên

 Các phương thức khởi tạo: một constructor mặc định và một construtor đầy đủ tham số

 Phương thức getThongTin() trả về chuỗi thông tin theo mẫu: tên(x,y)

Để thực hiện yêu cầu, trước tiên cần vẽ lược đồ lớp UML cho lớp tọa độ Tiếp theo, tiến hành cài đặt lớp tọa độ theo thiết kế đã đề ra Sau đó, xây dựng một lớp khác chứa hàm main để thực hiện phần kiểm nghiệm Cuối cùng, thay thế phương thức getThongTin() bằng phương thức toString() và đưa ra nhận xét về cách sử dụng phương thức này.

Lớp Point trong UML được thiết kế để tạo ra đối tượng điểm trong không gian hai chiều, bao gồm một constructor mặc định và một constructor với đầy đủ tham số Lớp này có các phương thức get/set, hàm toString() để trả về thông tin tọa độ, hàm negate() để tạo điểm đối xứng qua gốc O, và hàm getDistance() để tính khoảng cách đến tọa độ gốc O.

Cài đặt lớp như thiết kế và tạo đối tượng để kiểm tra lớp này

Lớp hình trụ tròn (Cylinder) trong UML bao gồm các thuộc tính như bán kính và chiều cao, cùng với các phương thức để tính diện tích xung quanh, diện tích toàn phần và thể tích Cần cài đặt lớp theo thiết kế đã định và tạo đối tượng để kiểm tra tính năng của lớp này.

Bài 4 a Viết lớp đối tượng DiemSinhVien như sau:

 Mã sinh viên (số nguyên>0),

 Họ tên (chuỗi, không được rỗng),

 Điểm LT, điểm TH (số thực, thuộc [0.0, 10.0])

 Constructor mặc định (gán giá trị mặc định)

 Constructor đủ tham số để khởi tạo giá trị cho tất cả các thuộc tính

 Các getter và setter cho mỗi thuộc tính

 Tính điểm trung bình (trung bình=(điểm LT + điểm TH)/2)

 Phương thức toString diễn tả đối tượng ở dạng chuỗi gồm 4 thông tin là mã sinh viên, họ tên, điểm LT, điểm TH, điểm TB

Bài tập Lập trình hướng đối tượng - Trang 23

Yêu cầu kiểm tra ràng buộc dữ liệu và gán giá trị mặc định khi dữ liệu không hợp lệ Xây dựng một lớp chứa hàm main để tạo ra ba đối tượng sinh viên: sv1, sv2 và sv3.

 sv1 chứa thông tin của chính mình (tạo bằng constructor đủ thông số, thông tin biết rồi nên khỏi yêu cầu nhập)

 sv2 là thông tin một người bạn của bạn (tạo bằng constructor mặc định, thông tin cũng biết rồi khỏi yêu cầu nhập)

Để tạo đối tượng sv3, cần yêu cầu nhập từng thông tin của sinh viên và gán vào sv3 Cần xem xét việc sử dụng constructor mặc định hay constructor với đủ tham số để khởi tạo sv3 một cách hợp lý.

 In bảng danh sách sinh viên gồm 4 cột là MSSV, họ tên, điểm LT, điểm TH, điểm TB (bảng có 3 dòng cho 3 sinh viên) như hình bên dưới

HD: Dùng String.format(“chuỗi định dạng”, đối số 1, đối số 2, ….); chuỗi định dạng giống c++, ví dụ:

“%-30s”: chuỗi, chiếm 30 ký tự, dấu trừ canh lề trái

“%5.2f”: số thực, chiếm 5 ký tự, bao gồm 2 ký số lẻ

 d: số nguyên (byte, short, int, long)

HD: Tham khảo code ở phụ lục

Bài 5 a Vẽ lược đồ và cài đặt lớp hình tam giác, biết tam giác có 3 cạnh ma, mb, mc, viết các phương thức:

- Constructor mặc định (không tham số)

- Constructor đủ tham số: nếu giá trị truyền có số âm hoặc nếu 3 giá trị không lập thành hình tam giác thì gán cả 3 thuộc tính bằng 0

Module 2 Các khái niệm cơ bản LT HĐT

Bài tập Lập trình hướng đối tượng - Trang 24

- Các phương thức getter/setter: nếu giá trị gán không hợp lệ (=0) và dung tích xylanh (>=0) Dựa vào trị giá xe và dung tích xylanh, sở giao thông sẽ tính mức thuế trước bạ phải đóng khi mua xe.

- Dưới 100cc, 1% trị giá xe

- Từ 100 đến 200cc, 3% trị giá xe

Đối với xe có dung tích trên 200cc, mức phí đăng ký là 5% giá trị xe a Thiết kế và cài đặt lớp ThongTinDangKyXe với các thuộc tính và phương thức phù hợp, đồng thời ném lỗi ra ngoài nếu có vi phạm ràng buộc dữ liệu Lớp này cần có các constructor và đảm bảo tính đóng gói b Xây dựng lớp chứa hàm main để thực hiện các công việc cần thiết.

- Tạo mảng 3 đối tượng xe1, xe2, xe3 Dữ liệu được gán sẵn hoặc cho người dùng nhập

- Xuất bảng kê khai tiền thuế trước bạ của các xe như mẫu:

Mẫu kết xuất của chương trình

Lớp HangThucPham đại diện cho hàng hóa thực phẩm trong kho của cửa hàng tiện lợi, với các thuộc tính quan trọng như mã hàng (không được phép sửa và không được để trống) và tên hàng (cũng không được để trống, với giá trị mặc định là ).

Đơn giá phải lớn hơn hoặc bằng 0, ngày sản xuất cần phải trước ngày hiện tại (mặc định là ngày hiện tại), và ngày hết hạn phải sau ngày sản xuất (mặc định là ngày sản xuất).

Bài tập Lập trình hướng đối tượng yêu cầu viết các phương thức setters/getters cho lớp HangThucPham, trong đó các setter phải gán giá trị mặc định nếu dữ liệu không hợp lệ (trừ hàm set mã hàng) Cần tạo một constructor đầy đủ tham số và một constructor chỉ có mã hàng, với điều kiện mã hàng không được rỗng; nếu không, sẽ phát sinh lỗi và các giá trị khác sẽ được gán mặc định Bên cạnh đó, cần viết phương thức kiểm tra hạn sử dụng của hàng thực phẩm và phương thức toString để trả về thông tin hàng hóa, bao gồm trạng thái hết hạn và đơn giá có phân cách hàng nghìn, định dạng ngày là dd/MM/yyyy Cuối cùng, viết lớp khác chứa hàm main để tạo 3 đối tượng, trong đó có một đối tượng có ngày hết hạn trước ngày sản xuất, và xuất thông tin của 3 mặt hàng theo mẫu Kiểm thử lớp HangThucPham với các ràng buộc đã cho.

- Kiểu ngày: dùng lớp LocalDate

 Tạo đối tượng: LocalDate ngay = LocalDate.of(2018, 12, 31);

 Xuất ngày (định dạng là ngày/tháng/năm)

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd/MM/yyyy");

String sngay = dtf.format(ngay);

- Kiểm tra ngày này trước hoặc sau ngày kia: dùng phương thức isBefore, isAfter

- Kiểm tra hàng đã hết hạn chưa:

- Định dạng số phân cách hàng nghìn và 2 số lẻ:

(i) Cài đặt cho lớp tài khoản (Account) được thiết kế như sau:

Module 2 Các khái niệm cơ bản LT HĐT

Bài tập Lập trình hướng đối tượng - Trang 26

+ Account() + Account(accNumber : long, name : String, balance : double) + Account(accNumber : long, name : String)

+ deposit(amount : double) : boolean + withdraw(amount : double, fee : double) : boolean + addInterest() : void

+ transfer(acc2 : Account, amount : double): boolean + toString() : String

Constructor trong lập trình bao gồm ba loại: constructor mặc định với số tài khoản là 999999, tên tài khoản là “chưa xác định” và số dư 50000; constructor đầy đủ tham số; và constructor có hai tham số Nếu giá trị tham số không hợp lệ, hệ thống sẽ gán giá trị mặc định cho thuộc tính tương ứng, đảm bảo rằng dữ liệu gán là hợp lệ khi số tài khoản được xác định.

>0, tên tài khoản khác rỗng, số dư >P000)

 deposit(amount : double): cho phép gởi thêm số tiền amount vào tài khoản, hàm trả về true nếu gởi thành công (amount>0)

 withdraw(amount : double, fee : double): cho phép rút số tiền amount từ tài khoản, hàm trả về true nếu rút tiền thành công (amount>0 và amount+fee 0, mặc định là 999999),

- Tựa CD (chuỗi không được rỗng, tên mặc định là "chưa xác định"),

- Số bài hát (số nguyên >0),

Yêu cầu (có vẽ mô hình lớp): a Vẽ mô hình và cài đặt lớp CD b Xây dựng lớp CDList để lưu danh sách các CD (dùng mảng):

- Phương thức khởi tạo tối đa n phần tử cho lớp CDList

- Phương thức thêm một CD vào danh sách nếu kích thước mảng cho phép, không thêm trùng mã

- Phương thức toString() trả thông tin của toàn bộ CD có trong danh sách

- Tính số lượng CD có trong danh sách

- Tính tổng giá thành của các CD

- Phương thức tìm kiếm theo mã CD

- Phương thức sắp xếp danh sách giảm dần theo giá thành

Để sắp xếp danh sách CD theo thứ tự tăng dần, cần xây dựng một lớp kiểm nghiệm Có thể sử dụng menu case để thực hiện các chức năng theo yêu cầu một cách hiệu quả.

 Cài đặt lớp CongNhan, biết mHo, mTen, mSoSP lần lượt là các thuộc tính họ, tên và số sản phẩm

 Viết phương thức tinhLuong() để tính lương cho công nhân, lương = số sản phẩm * đơn giá, với đơn giá tính theo từng cấp như sau:

Số sản phẩm Đơn giá

Từ sản phẩm thứ 600 trở lên 0.65 a Cài đặt lớp DanhSachCongNhan, có:

 Phương thức khởi tạo n phần tử

 Phương thức thêm một công nhân vào danh sách, thêm thành công nếu kích thước còn cho phép

 Phương thức lấy số lượng công nhân có trong danh sách

Bài tập Lập trình hướng đối tượng - Trang 31

 Phương thức xóa công nhân khi biết mã

 Phương thức lấy danh sách công nhân làm trên 200 sản phẩm

KẾ THỪA – ĐA HÌNH

 Hiểu và áp dụng được cách viết code kế thừa và đa hình trên Java

 Hiểu và áp dụng được cách sử dụng mô hình lớp với mô tả kế thừa

 Bài làm lưu trong workspace có tên MaSV_HoTen

 Mỗi bài làm trong một package có tên package là bai01, bai02,…

 Viết documentation comment cho class

Công ty du lịch X có quản lý thông tin các chuyến xe Có 2 loại chuyến xe:

 Chuyến xe nội thành: Mã số chuyến, Họ tên tài xế, số xe, số tuyến, số km đi được, doanh thu

 Chuyến xe ngoại thành: Mã số chuyến, Họ tên tài xế, số xe, nơi đến, số ngày đi được, doanh thu

Thực hiện yêu cầu vẽ mô hình và cài đặt các lớp với chức năng thừa kế Trong hàm main, tạo sẵn hai chuyến xe cho mỗi loại vào danh sách mà không cần nhập từ bàn phím Cuối cùng, xuất tổng doanh thu cho tất cả các chuyến xe và tổng doanh thu của từng loại chuyến xe.

Thư viện X quản lý danh sách các loại sách Thông tin về các loại sách gồm:

 Sách giáo khoa: Mã sách, ngày nhập, đơn giá, số lượng, nhà xuất bản, tình trạng (“mới”, “cũ”)

Nếu tình trạng sách là “mới” thì: thành tiền = số lượng * đơn giá

Nếu tình trạng sách là “cũ” thì: thành tiền = số lượng * đơn giá * 50%

 Sách tham khảo: Mã sách, ngày nhập, đơn giá, số lượng, nhà xuất bản, thuế

Thành tiền = số lượng * đơn giá + thuế

Để thực hiện yêu cầu, trước tiên cần vẽ mô hình và cài đặt các lớp với chức năng thừa kế Trong hàm main, tạo sẵn 3 cuốn sách cho mỗi loại vào danh sách mà không cần nhập từ bàn phím Sau đó, tính tổng thành tiền cho từng loại sách, tìm các sách giáo khoa của nhà xuất bản K (yêu cầu nhập K), và xác định thành tiền cao nhất trong danh sách.

Hướng dẫn: ở phần phụ lục

Module 3 Kế thừa – Đa hình

Bài tập Lập trình hướng đối tượng - Trang 38

Cài đặt cho mô hình lớp sau, với yêu cầu tương tự bài 2 Tạo menu case trong hàm main cho phép thực hiện các chức năng

Viết chương trình quản lý danh sách các giao dịch Hệ thống quản lý 2 loại giao dịch:

 Giao dịch vàng: Mã giao dịch, ngày giao dịch, đơn giá, số lượng, loại vàng Thành tiền tính như sau:

Thành tiền = số lượng * đơn giá

Giao dịch tiền tệ bao gồm các thông tin quan trọng như mã giao dịch, ngày giao dịch, đơn giá, số lượng, tỉ giá và loại tiền tệ Có ba loại tiền tệ chính được sử dụng là tiền Việt Nam, tiền USD và tiền Euro Thành tiền được tính dựa trên các yếu tố này.

- Nếu là tiền USD hoặc Euro thì: thành tiền = số lượng * đơn giá * tỉ giá

- Nếu là tiền VN thì: thành tiền = số lượng * đơn giá

Thực hiện các yêu cầu sau: a Vẽ mô hình và cài đặt các lớp với chức năng thừa kế

Bài tập lập trình hướng đối tượng yêu cầu tạo lớp danh mục để lưu trữ các loại giao dịch Cần viết thêm các phương thức để tính tổng số lượng cho từng loại giao dịch, tính trung bình thành tiền của các giao dịch tiền tệ, và lấy ra các giao dịch có đơn giá lớn hơn 1 tỷ Cuối cùng, viết hàm main để tạo sẵn ba giao dịch cho mỗi loại vào danh sách mà không cần nhập từ bàn phím, sau đó gọi các phương thức đã được định nghĩa.

Công ty XYZ có nhiều nhân viên, bao gồm:

- SalariedEmployee: NV được trả lương theo tuần, cần lưu số tiền trả hàng tuần (weeklySalary)

- HourlyEmployee: NV được trả lương theo giờ, cần lưu số giờ (hours) và số tiền/giờ (wage)

- CommissionEmployee: NV bán hàng dạng part-time, trả lương theo doanh số bán hàng (grossSales) và phần trăm hoa hồng (commissionRate)

- BasePlusCommission: NV bán hàng chính thức, ngoài tiền lương được trả giống như

CommissionEmployee thì còn có lương căn bản (baseSalary)

Cách thức tính lương và yêu cầu kết xuất được mô tả như bảng dưới đây:

Thiết kế và cài đặt mô hình lớp theo mô tả đã cho Viết hàm main để tạo ra mảng các đối tượng Employee với đủ loại và xuất bảng lương của các Employee này.

Module 3 Kế thừa – Đa hình

Bài tập Lập trình hướng đối tượng - Trang 40

Hàng hóa trong kho của một siêu thị gồm có hàng thực phẩm, hàng sành sứ và hàng điện máy

Mỗi loại hàng đều có: mã hàng (không được sửa, không được để trống), tên hàng (không được rỗng, mặc định là “xxx”), đơn giá (>=0), số lượng tồn (>=0)

Khi lựa chọn hàng thực phẩm, cần chú ý đến thông tin quan trọng như nhà cung cấp, ngày sản xuất (phải trước ngày hiện tại) và ngày hết hạn (phải sau ngày sản xuất).

Hàng điện máy cần biết: thời gian bảo hành bao nhiêu tháng (>=0), công suất bao nhiêu KW (>=0)

Hàng sành sứ thì cần biết thông tin về: nhà sản xuất và ngày nhập kho (phải trước ngày hiện tại, mặc định là ngày hiện tại)

Người quản lý cần chú ý đến số lượng tồn kho và các yếu tố liên quan đến từng loại hàng hóa để đánh giá mức độ bán buôn và tính tiền VAT Đối với hàng thực phẩm, nếu còn tồn kho và đã hết hạn, sẽ được coi là khó bán Hàng điện máy được đánh giá là bán được khi số lượng tồn kho dưới 3 Đối với hàng sành sứ, nếu số lượng tồn kho trên 50 và thời gian lưu kho trên 10 ngày, sẽ được xem là bán chậm Các trường hợp còn lại sẽ không được đánh giá.

Để tính tiền VAT cho từng loại hàng hóa, hàng điện máy và sành sứ có VAT là 10%, trong khi hàng thực phẩm có VAT là 5% Cần xác định các lớp có thể có và phương thức trừu tượng Thiết kế mô hình lớp bao gồm cây thừa kế và các interface nếu cần Tiến hành cài đặt mô hình lớp đã thiết kế Tạo lớp quản lý danh sách hàng hóa sử dụng mảng để lưu trữ Viết phương thức thêm hàng hóa vào danh sách, đảm bảo không trùng mã hàng Cần có các phương thức toString(), lấy danh sách từng loại hàng hóa, tìm kiếm hàng hóa theo mã, sắp xếp hàng hóa theo tên tăng dần và theo số lượng tồn giảm dần Cũng cần viết phương thức lấy danh sách hàng thực phẩm khó bán, xóa hàng hóa theo mã và sửa thông tin đơn giá theo mã hàng Cuối cùng, tạo lớp thử nghiệm với menu lựa chọn để thực hiện các chức năng đã nêu.

Dùng Arrays.sort và interface Comparator để sắp xếp

Bài tập Lập trình hướng đối tượng - Trang 41

Để xây dựng chương trình quản lý cho một học viện nghiên cứu giảng dạy và ứng dụng, cần quản lý các đối tượng như sinh viên, nhân viên và khách hàng Mỗi đối tượng sẽ có những đặc tính riêng, do đó người quản lý cần áp dụng các phương pháp đánh giá khác nhau để phù hợp với từng nhóm.

Xây dựng các lớp trong chương trình như sau: Lớp Person bao gồm họ tên, địa chỉ và phương thức toString Các lớp Student, Employee, Customer sẽ kế thừa từ lớp Person Lớp Student có thuộc tính điểm môn học 1, điểm môn học 2, cùng các phương thức tính điểm trung bình, đánh giá và toString để trả về bảng điểm sinh viên Lớp Employee bao gồm thuộc tính hệ số lương, với các phương thức tính lương, đánh giá và toString để trả về bảng lương cho nhân viên Lớp Customer có thuộc tính tên công ty, trị giá hóa đơn và đánh giá, với phương thức toString để trả về thông tin hóa đơn cho khách hàng Lớp Management lưu trữ thông tin toàn bộ sinh viên, nhân viên, khách hàng và tổng số người hiện có trong danh sách, cùng các phương thức khởi tạo mảng, thêm, xóa người khỏi danh sách, sắp xếp theo họ tên và xuất danh sách dưới dạng bảng Cuối cùng, viết lớp Test với hàm main để kiểm nghiệm, giao tiếp với người dùng qua menu, thể hiện tính đa hình bằng cách cho phép lựa chọn nhập thông tin là sinh viên, nhân viên hay khách hàng.

Tạo lớp trừu tượng Shape với ba phương thức trừu tượng: draw(), erase() và move(int x, int y) Tiến hành tạo các lớp con như đã liệt kê trong bảng dưới đây và ghi đè các phương thức trừu tượng, với mỗi phương thức chỉ in ra thông báo tương ứng trên console.

Shape - Circle, Quad, Triangle, Polygon

Viết lớp Drawing với phương thức drawShape(Shape theShape), trong đó tham số là một đối tượng Shape Phương thức này sẽ gọi đến hàm draw() của từng đối tượng Shape và thực thi phương thức đó.

Module 3 Kế thừa – Đa hình

Bài tập Lập trình hướng đối tượng - Trang 42

Với một tập mini các loại xe trong thế giới thực cho bên dưới:

- Thông tin từng loại xe

Tính thuế cho các loại xe dựa trên giá trị như sau: Xe đạp không phải đóng thuế; xe máy phải chịu thuế VAT và thuế trước bạ 5%; xe ô tô khách có thuế tiêu thụ đặc biệt 30% nếu số chỗ ngồi từ 5 trở lên, và 50% nếu số chỗ ngồi dưới 5.

VAT% và thuế trước bạ 20% o Xe ô tô tải: gồm VAT% và thuế trước bạ 2%

Yêu cầu sinh viên: a Thiết kế lược đồ lớp theo mô tả trên b Cài đặt cho lược đồ đã thiết kế

Trường đại học X có nhiều cấp đào tạo, thông tin về sinh viên được tổ chức như sau:

 Sinh viên trung cấp (trung cấp 2 năm)

 Sinh viên liên kết (Austraulia, US)

Để thực hiện yêu cầu, cần xác định các thông tin và dữ liệu chung cũng như riêng Tiếp theo, định nghĩa các lớp với các thuộc tính và phương thức, đồng thời xây dựng mô hình phân cấp cho các lớp này Cuối cùng, viết một lớp cho phép nhập và hiển thị thông tin về sinh viên.

Các bước phân tích bài 2:

Bước 1: Liệt kê các đặc điểm các lớp đối tượng độc lập

Bài tập Lập trình hướng đối tượng - Trang 43

Bước 2: Tìm tập giao của thuộc tính và phương thức, tách làm lớp cha…

Bước 3: Thiết kế lớp Test

Module 3 Kế thừa – Đa hình

Bài tập Lập trình hướng đối tượng - Trang 44

Bài tập Lập trình hướng đối tượng - Trang 45

TẬP HỢP

 Khai báo và khởi tạo tập hợp

 Các thao tác thêm, xóa, sửa, duyệt trên tập hợp

 Các thuật toán sắp xếp, tìm kiếm trên tập hợp

 Bài làm lưu trong workspace có tên MaSV_HoTen

 Mỗi bài làm trong một package có tên package là bai01, bai02,…

 Viết documentation comment cho class

Collection A basic interface that defines the normal operations that allow a collection of objects to be maintained or handled as a single unit

Set The Set interface extends the Collection interface to represent its mathematical namesake: a set of unique elements HashSet

SortedSet The SortedSet interface extends the Set interface to provide the required functionality for maintaining a set in which the elements are stored in some sorted order

List The List interface extends the Collection interface to maintain a sequence of elements that need not be unique ArrayList

Map A basic interface that defines operations for maintaining mappings of keys to values HashMap

SortedMap Extends the Map interface for maps that maintain their mappings sorted in key order

Bài tập Lập trình hướng đối tượng - Trang 46

Công ty TrueLove cần quản lý danh sách nhân viên để chọn ngẫu nhiên một người nhận quà tặng hàng tháng Để đặt tên cho sản phẩm mới, công ty sẽ sử dụng tên của nhân viên, đảm bảo rằng mỗi tên chỉ được sử dụng một lần TrueLove cũng muốn chọn tên phổ biến nhất cho sản phẩm, tức là tên xuất hiện nhiều nhất trong danh sách Ngoài ra, công ty có chính sách ưu tiên cho nhân viên đăng ký du lịch trước Cuối cùng, TrueLove cần tạo danh sách khách hàng theo thứ tự tăng dần dựa trên doanh số.

Viết một phương thức nhận vào một chuỗi và trả về số ký tự duy nhất trong chuỗi đó Tạo chương trình cho phép nhập nhiều chuỗi và xuất kết quả tương ứng cho từng chuỗi.

Để tiết kiệm thời gian đếm ký tự cho các chuỗi nhập vào có thể trùng nhau, người ta muốn lưu lại kết quả số ký tự của từng chuỗi Khi gặp chuỗi giống trước đó, chương trình sẽ truy xuất đến kết quả đã tính được Việc lựa chọn sử dụng collection và map là rất thích hợp trong trường hợp này.

Viết chương trình tạo hai tập hợp số nguyên (Set) Tính giao, hội, hiệu hai tập trên, xuất kết quả tăng dần HD: Dùng TreeSet

Tạo một ArrayList để lưu trữ thông tin của các sinh viên, bao gồm mã, họ tên và năm sinh Thêm 5 sinh viên vào danh sách mà không trùng mã Cần viết các phương thức để lấy danh sách sinh viên, thêm sinh viên mới, xóa sinh viên theo mã, sửa thông tin sinh viên (không cho phép sửa mã), tìm kiếm sinh viên theo mã hoặc tên, và sắp xếp danh sách theo mã tăng dần.

Tùy chọn sửa lại một trong các bài tập ở Module 3: lựa chọn sử dụng collection thích hợp để lưu trữ (không dùng mảng thông thường)

Bài tập Lập trình hướng đối tượng - Trang 47

Trong một trường đại học, các phòng học được quản lý bao gồm phòng học lý thuyết, phòng máy tính và phòng thí nghiệm, mỗi phòng đều có mã phòng, dãy nhà, diện tích và số bóng đèn Đối với phòng học lý thuyết, cần kiểm tra sự hiện diện của máy chiếu Phòng máy tính cần được trang bị đủ số lượng máy tính, trong khi phòng thí nghiệm cần cung cấp thông tin về chuyên ngành, sức chứa và sự có mặt của bồn rửa để phục vụ việc rửa dụng cụ thí nghiệm hoặc rửa tay.

Người quản lý cần xem xét tiêu chuẩn của phòng học, bao gồm yêu cầu về ánh sáng với trung bình 10m² cần một bóng đèn Cụ thể, phòng lý thuyết phải trang bị máy chiếu, phòng máy tính cần có một máy cho mỗi 1.5m², và phòng thí nghiệm phải có bồn rửa đi kèm.

Yêu cầu thiết kế và thực hiện cài đặt tường minh cho từng loại phòng học, bao gồm việc viết lớp quản lý danh sách phòng học sử dụng List hoặc Set Lớp này cần có phương thức thêm phòng học không trùng mã, tìm kiếm phòng theo mã, và phương thức toString() để lấy thông tin toàn bộ danh sách Cần có các phương thức để lấy danh sách phòng đạt chuẩn, sắp xếp danh sách theo dãy nhà, diện tích, và số bóng đèn Ngoài ra, cần có phương thức cập nhật số máy tính cho phòng máy, xóa phòng theo mã với xác minh, tính tổng số phòng học, và lấy danh sách phòng máy có 60 máy Cuối cùng, tạo lớp thử nghiệm với menu lựa chọn để thực hiện các chức năng yêu cầu.

Mô hình lớp trong ngôn ngữ lập trình Java được sử dụng để xây dựng ứng dụng quản lý nhân viên cho một công ty phần mềm Mỗi nhân viên (Employee) trong công ty cần lưu trữ các thông tin quan trọng như mã số (thePayrollNumber) và tên nhân viên.

(theName), lương cơ bản hằng tháng (theBasicMonthlySalary) Mã số của mỗi nhân viên chỉ được tạo một lần duy nhất và không được phép sửa

Bài tập Lập trình hướng đối tượng - Trang 48 a Nhân viên trong công ty gồm: Lập trình viên (Programmer), Người quản lý (Administrator) và Người trưởng dự án (ProjectLeader)

- Tạo các phương thức setters/getters cho các thuộc tính của các lớp

Tiền lương hằng tháng (getMonthlySalary) bao gồm tiền lương cơ bản và phụ cấp Phụ cấp được tính như sau: người quản lý nhận 40% lương cơ bản, lập trình viên nhận 20% lương cơ bản nếu sử dụng ngôn ngữ lập trình “Java”, và người trưởng dự án nhận phụ cấp giống lập trình viên cộng thêm 20% lương cơ bản Công ty phần mềm (SoftwareHouse) có tên gọi (theName) và danh sách các nhân viên Constructor SoftwareHouse(aName : String) được sử dụng để tạo một công ty với tên aName và khởi tạo danh sách nhân viên Phương thức addEmployee(emp : Employee): boolean cho phép thêm một nhân viên emp vào công ty.

Để quản lý nhân viên hiệu quả, hệ thống cần thực hiện các phương thức sau: Thêm nhân viên thành công nếu mã số không trùng lặp Phương thức `displayAllStaff()` trả về thông tin toàn bộ nhân viên theo định dạng cột, với đơn vị tiền tệ là $ và phân cách hàng nghìn Phương thức `getMonthlySalaryBill()` tính tổng tiền lương phải trả cho các nhân viên Để sắp xếp danh sách nhân viên theo tên, sử dụng phương thức `sortAllStaffByName()` Phương thức `displayListProgrammers()` cung cấp thông tin về các lập trình viên Để cập nhật phòng ban cho người quản lý, phương thức `updateDepartmentForAdmin(aPayrollNo: int, deptNew: String)` sẽ trả về true nếu cập nhật thành công Cuối cùng, phương thức `deleteEmployee(id: int)` cho phép xóa nhân viên theo mã số và trả về true nếu việc xóa thành công.

Bài tập Lập trình hướng đối tượng - Trang 49 c Viết chương trình chính tạo menu case để thực hiện các chức năng trong câu b

Quản lý thông tin các khóa học và thông tin sinh viên tham gia đăng ký học các khóa học

Lớp Person (người) là lớp cơ sở Lớp Student (sinh viên) và Faculty (giảng viên) là hai lớp dẫn xuất từ lớp này

Mỗi học phần thu hút nhiều sinh viên đăng ký tham gia (Enrolment) Sinh viên trong học phần sẽ có trạng thái (status), điểm chữ (grade) và điểm số (numGrade).

Trong đó, phương thức addSection dùng để thêm một học phần cho khóa học: addSection(String sectionNbr, String semester, String room, Faculty facultyMember, Set listEnrolls): void

HD: Mapping to java code public class Person { protected String lastName; protected String firstName;

} public class Student extends Person { private int yearMatriculated; private String studentID;

- credits: int + addSection(String, String, String, Faculty, Set): void + getNbrStudents(String): int ôconstructorằ

+ Course() + Course(String, String, int) ôproperty getằ

+ getCourseNbr(): String + getCourseTitle(): String + getCredits(): int ôproperty setằ

+ setCourseNbr(String): void + setCourseTitle(String): void + setCredits(int): void

+ Enrolment(Student, String, String, float) ôproperty getằ

+ Faculty() + Faculty(String, String, String, String) ôproperty getằ

+ getFacultyID(): String + getOffice(): String ôproperty setằ

+ setFacultyID(String): void + setOffice(String): void

+ Person(String, String) + Person() ôproperty getằ

+ getLastName(): String + getFirstName(): String ôproperty setằ

+ setLastName(String): void + setFirstName(String): void

+ Section() + Section(String, String, String, Faculty, Set) ôproperty getằ

+ getSectionNbr(): String + getSemester(): String + getRoom(): String ôproperty setằ

+ setSectionNbr(String): void + setSemester(String): void + setRoom(String): void

+ Student(String, String, String, int) ôproperty getằ

Bài tập Lập trình hướng đối tượng - Trang 50 public class Faculty extends Person

{ private String office; private String facultyID;

} public class Section { private String semester; private String sectionNbr; private String room; private Faculty facultyMember; private Set listEnrolls ;

} public class Enrolment { private String status; private String grade; private float numGrade; private Student student;

The `Course` class encapsulates essential attributes such as the course number, title, and credits, along with a collection of sections It includes a method to retrieve the number of students enrolled in a specific section and a function to add a new section, specifying details like the semester, room, faculty member, and a set of enrollments.

Viết lớp cho phần thử nghiệm:

1 Tạo danh sách giảng viên

2 Tạo danh sách sinh viên

4 Lập danh sách sinh viên tham gia vào 1 học phần của khóa học do 1 giảng viên giảng dạy

5 In ra màn hình theo mẫu:

Lớp mô tả các toán tử trên danh sách liên kết được xây dựng bằng cách sử dụng LinkedList Chương trình tạo ra hai LinkedList, trong đó chứa thông tin là các chuỗi String Các phần tử từ danh sách này được thêm vào danh sách kia Đồng thời, các chuỗi trong danh sách được chuyển đổi thành chữ hoa và các phần tử không cần thiết sẽ được xóa bỏ.

Chương trình tra cứu danh bạ điện thoại cần sử dụng cấu trúc collection phù hợp để lưu trữ thông tin Chương trình cho phép tra cứu theo địa chỉ, với khả năng đăng ký nhiều số điện thoại cố định cho một địa chỉ, và cũng hỗ trợ tra cứu theo số điện thoại.

Ngày đăng: 04/05/2023, 16:55

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w