You are on page 1of 25

Tài liệu Thực hành Lập trình Hướng đối tượng Java

THỰC HÀNH TUẦN 1, 2, 3, 4, 5


GIỚI THIỆU CHUNG VỀ JAVA
I. Cài đặt Netbean
Yêu cầu hệ thống
Để cài đặt Netbeans IDE hệ thống cần những yêu cầu sau:

• Os : Windows 7 (32 bit hoặc 64 bit), Ubuntu 10 trở lên, Mac OS 10.7 trở lên
• CPU : Pentium IV trở lên
• Ram : Ít nhất 1GB.
• Ổ đĩa trống: Ít nhất 1GB.

Phần mềm cần thiết


Để cài đặt Netbeans IDE ta cần chuẩn bị:
Java SE Development Kit (JDK)
Netbeans IDE

Các bước cài đặt


Để cài đặt Netbeans IDE chúng ta cần làm theo các bước như sau:

Bước 1 : Ta cần cài đặt Java SE Development Kit(JDK) trước mới cài đặt được Netbeans
IDE. Đầu tiên các bạn vào link download JDK ở phía trên để download JDK về máy. Bạn
cần Accept License Agreement trước sau đó chọn bản cài đặt phù hợp với hệ thống máy của
mình.

Bước 2: Sau khi download JDK bạn khởi chạy Java SE Development Kit lên nhấn Next để
tiếp tục.
Bước 3: Để nguyên mặc định nhấn Next để tiếp tục.
Bước 4: Quá trình cài đặt hiện ra bạn chờ 1 tí xíu để tiếp tục bước tiếp theo.
Bước 5: Bạn để nguyên mặc định nhấn Next để tiếp tục.
Bước 6: Bạn đợi quá trình cài đặt diễn ra.
Bước 7: Cài đặt xong bạn nhấn Close để hoàn thành bước cài đặt JDK.
Bước 8: Sau khi download Netbeans IDE. Bạn khởi chạy Netbeans IDE để cài đặt
nhấn Customize để vào phần tiếp theo hoặc nhấn Next để tiến tới bước 11.

Bộ môn Công nghệ Thông tin Trang 1


Tài liệu Thực hành Lập trình Hướng đối tượng Java

Bước 9: Bạn nên chọn hết các phần lựa chọn sau đó nhấn OK để tiếp tục.
Bước 10: Bạn nhấn Next để tiếp tục.
Bước 11: Bạn chọn vào I accept the terms in the license agreement như hình sau đó
nhấn Next để tiếp tục.
Bước 12: Để mặc định nhấn Next để tiếp tục(3 lần).
Bước 13: Bạn nên chọn Check for Updates để NetBeans luôn được cập nhật phiên bản mới
nhất sau đó nhấn Install để cài đặt.
Bước 14: Quá trình cài đặt diễn ra bạn vui lòng chờ đợi.
Bước 15: Nhấn Finish để kết thúc quá trình cài đặt.
Bước 16: Khi cài đặt xong bạn khởi chạy Netbeans IDE lên nếu giao diện xuất hiện thì đã
thành công.
Lỗi thường gặp:
Trường hợp khi cài xong mà Netbeans không chạy thì lý do là các bạn chưa cấu hình JDK
các bạn có thể khắc phục như sau:
Bước 1: Bạn Click chuột phải lên Computer(Win 7), This PC(Win 8, 10) chọn Properties.
Bước 2: Bạn chọn Advanced system settings.
Bước 3: Bạn chọn mục Advanced sau đó chọn Environment Variables.
Bước 4: Bạn chọn New như trong hình.

Bước 5: Bạn điền thông tin vào

• Variable name: JAVA_HOME


• Variable value: bạn điền đường dẫn file JDK lúc đầu bạn cài đặt thông thường sẽ là
C:\Program File\Java\jdkxxx (xxx tương ứng với phiên bản mà bạn đã cài đặt)
• Sau đó bạn nhấn OK để hoàn thành.

Bộ môn Công nghệ Thông tin Trang 2


Tài liệu Thực hành Lập trình Hướng đối tượng Java

II. Chạy bài ví dụ “Hello.java”


a. Mở chương trình Netbean IDE

b. Tạo Project để quản lý các file thực thi


Bước 1: Vào File > New Project… hoặc phím tắt Ctrl + Shift + N
Bước 2: Chọn loại Project(ở đây chọn Java Class Library)

Bộ môn Công nghệ Thông tin Trang 3


Tài liệu Thực hành Lập trình Hướng đối tượng Java

Bước 3:
- Đặt tên Project
- Chọn thư mục chứa Project

Bước 4: Tạo lớp Hello.java


Chuột phải lên Project vừa tạo, chọn như hình

Form mới xuất hiện yêu cầu nhập tên Class cần tạo

Bộ môn Công nghệ Thông tin Trang 4


Tài liệu Thực hành Lập trình Hướng đối tượng Java

c. Các bước thực hiện viết chương trình Java


- Tạo Project chứa các class
- Đặt tên class
- Lưu file có tên trùng với tên class
- Có phần mở rộng .java
VD: Tên class là Hello thì tên file sẽ là Hello.java
d. Chạy chương trình:

Bộ môn Công nghệ Thông tin Trang 5


Tài liệu Thực hành Lập trình Hướng đối tượng Java

Tại lớp Java cần chạy, chuột phải chọn Run File hoặc nhấn tổ hợp phím Shift + F6 để
chạy chương trình.
III. Bài tập:
1. Viết chương trình định dạng số thập phân
Mã nguồn tham khảo
import java.text.DecimalFormat;
public class DecimalFormat3 {
public static void main(String args[])
{
DecimalFormat df = new DecimalFormat("0.00");
System.out.println(df.format(1234.56135));
}
};

Chú ý: Có 2 cách để nhập dữ liệu từ bàn phím


- Cách 1: sử dụng class Integer, Double… Ví dụ:
int a=Integer.parseInt(args[0]);
- Cách 2: sử dụng class Scanner. Ví dụ:
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
Với cách này nên viết riêng class ThuVien để thuận tiện sử dụng nhiều lần hơn
Mã nguồn tham khảo:
import java.util.*;
class ThuVien
{
public static int getInt(String mes)
{
Scanner sc = new Scanner(System.in);
System.out.println(mes);
return sc.nextInt();
}
public static double getDouble(String mes)
{
Scanner sc = new Scanner(System.in);
System.out.println(mes);
return sc.nextDouble();
}
public static float getFloat(String mes)
{
Scanner sc = new Scanner(System.in);
System.out.println(mes);
return sc.nextFloat();

Bộ môn Công nghệ Thông tin Trang 6


Tài liệu Thực hành Lập trình Hướng đối tượng Java

}
public static String getString(String mes)
{
Scanner sc = new Scanner(System.in);
System.out.println(mes);
return sc.nextLine();
}
}
Khi muốn sử dụng, ta chỉ cần gọi:
int a = ThuVien.getInt(“Nhap chieu dai:”);
2. Viết chương trình giải phương trình bậc 2
Gợi ý:
- Đầu vào: a, b, c
- Đầu ra: Giá trị x hoặc vô nghiệm hoặc vô số nghiệm
- Phương pháp:
Bước 1: Nếu a = 0 thì
Nếu b = 0
Nếu c = 0 thì vô số nghiệm
Ngược lại thì vô nghiệm
Nếu b ≠ 0 thì x = - c/b
Bước 2: Nếu a ≠ 0 thì
Bước 2.1: Tính delta = b2 - 4ac
Bước 2.2:
Nếu delta <0 thì vô nghiệm
Nếu delta = 0 thì có 1 nghiệm x = -b/2/a
Nếu delta > 0 thì có hai nghiệm phân biệt

x1 = (-b + delta )/2/a

x2 = (-b - delta )/2/a

Đoạn mã gợi ý:
- Nhập giá trị của a,b,c qua đối số hàm main()
a = Integer.parseInt(args[0]);//a = Double.parseDouble(args[0])

Bộ môn Công nghệ Thông tin Trang 7


Tài liệu Thực hành Lập trình Hướng đối tượng Java

b = Integer.parseInt(args[1]);
c = Integer.parseInt(args[2]);
- Tính delta và giá trị X1,X2:
delta=Math.pow(b,2)- 4*a*c;
X1,2 = (-b + /- Math.sqrt(delta))/(2*a);
Code mẫu tại đây:
package com.mycompany.BaiTap;
//Su dung lop Scanner cua goi util de nhap du lieu tu ban phim
import java.util.Scanner;
public class PhuongTrinhBacHaii {

public static void main(String[] args) {


//Tao cac bien de giai phuong trinh bac 2
float a, b, c, x1, x2, del;
//Tao doi tuong Scanner de nhap du lieu
Scanner input = new Scanner(System.in);
System.out.println("a= ");
a = input.nextFloat();
System.out.println("b= ");
b = input.nextFloat();
System.out.println("c= ");
c = input.nextFloat();
if (a == 0) {
if (b == 0) {
if (c == 0) {
System.out.println("Phuong trinh vo so
nghiem");
} else {
System.out.println("Phuong trinh vo nghiem");
}
} else {
System.out.println("Phuong trinh co 1 nghiem" +
(-c / b));
}
} else {
del = b * b - 4 * a * c;
if (del < 0) {
System.out.println("Phuong trinh vo nghiem");
} else if (del == 0) {
x1 = x2 = -b / (2 * a);
} else {
x1 = (float) (-b + Math.sqrt(del)) / (2 * a);
x2 = (float) (-b - Math.sqrt(del)) / (2 * a);
System.out.println("Phuong trinh 2 nghiem: \n
x1=" + x1 + "\n x2=" + x2);
}
}
}

Bộ môn Công nghệ Thông tin Trang 8


Tài liệu Thực hành Lập trình Hướng đối tượng Java

}
3. Viết chương trình tính chu vi, diện tích hình chữ nhật
Gợi ý :
- Các biến cần có: chiều rộng, chiều dài, chu vi hình chữ nhật, diện tích hình chữ
nhật.
- Đầu vào : Chiều dài và chiều rộng
- Đầu ra : Chu vi và diện tích hình chữ nhật
- Phương pháp :
o Công thức tính chu vi hình chữ nhật : (chiều dài + chiều rộng) x 2
o Công thức tính diện tích hình chữ nhật : chiều dài x chiều rộng
4. Viết chương trình nhập vào 3 số được nhập vào có phải là 3 cạnh tam giác?
Nếu đúng là 3 cạnh tam giác, cho biết tam giác loại gì? Vuông, cân, đều,
thường?
5. Viết chương trình tính tổng các số chẵn từ 2 đến N(nguyên dương nhập từ bàn
phím)
6. Viết chương trình tính tổng các số lẻ từ 1 đến 100.
7. Viết chương trình kiểm tra số nguyên dương N nhập vào từ bàn phím có phải là
số nguyên tố không?
8. Viết chương trình in ra các số hoàn thiện từ 1 đến n. Số hoàn thiện là số có tổng
các ước thực sự của nó bằng chính nó: Ví dụ: 6=1+2+3 là số hoàn thiện.
9. Viết chương trình in ra dãy số Fibonaci là dãy số tự nhiên có số sau bằng tổng
2 số đi liền trước nó: 0,1,1,2,3,5,8,13.. cho đến n.
10. Viết hàm tinhDTBC nhận đối số là một mảng số thực các điểm số từ 0 đến 10.
Tính và trả về điểm trung bình của các điểm số. Nếu có điểm số không hợp lệ
thì hàm trả về giá trị -1. Viết chương trình để gọi hàm này trong hàm main và
với một mảng điểm khai báo và khởi gán sẵn, in ra số liệu mảng và kết quả gọi
hàm.
import java.io.*;
import java.util.*;
class MangSoNguyen {
public static void main(String[] args) {
// khoi tao mang so nguyen gom 10 phan tu
int[] array_int = new int[10];
// khoi tao cac gia tri ngau nhien cho mang so nguyen
for (int i = 0; i < array_int.length; i++)
array_int[i] = (int) (Math.random()*50);
//tinh tong cac so nguyen ngau nhien trong mang
int sum=0;

Bộ môn Công nghệ Thông tin Trang 9


Tài liệu Thực hành Lập trình Hướng đối tượng Java

for (int i = 0; i < array_int.length; i++)


sum+=array_int[i];
// hien thi ket qua
for (int i = 0; i < array_int.length; i++)
System.out.println("So thu " + i+ " la:" + array_int[i]);
System.out.println(" Tong 10 so nguyen ngau nhien la : " +
sum);
}
}
11. Viết chương trình sắp xếp mảng các số nguyên theo chiều tăng dần giá trị các
phần tử.
12. Viết chương trình sắp xếp mảng các số nguyên theo chiều giảm dần giá trị các
phần tử.
13. Viết chương trình tìm giá trị nhỏ nhất của mảng các số nguyên nhập từ bàn
phím.
14. Viết chương trình tìm phần tử cuối cùng của mảng chứa giá trị nhỏ nhất.
Sử dụng hàm
15. Viết chương trình tính S=7! + 10! + 12! + 14! . Chú ý: Viết hàm tính giai thừa.
16. Viết chương trình tính S = Ö1 + Ö2 + Ö3 + Ö4 + … + Ö100
17. Viết chương trình tìm ước số chung lớn nhất của hai số nguyên nhập từ bàn
phím. Ví dụ nhập 16 và 10 => 2.
18. Viết chương trình thực hiện các thao tác sau đối với một chuỗi cho trước:
“Write a Java program very easily”
- Đếm số lượng ký tự a có trong chuỗi.
- Kiểm tra chuỗi có chứa từ “Java”
- Kiểm tra chuỗi có bằng đầu bằng từ “Write””
- Kiểm tra chuỗi có kết thúc bằng từ “easily”
19. Viết chương trình cho nhập vào 1 chuỗi và in ra chuỗi đảo ngược
20. Viết chương trình in ra ngày, tháng, năm hiện tại
21. Viết hàm biến đổi số thập phân thành chuỗi nhị phân 8 bít
22. Viết hàm biến đối chuỗi nhị nhân thành số thập phân.
23. Viết hàm chuẩn hóa một chuỗi họ tên: viết hoa ký tự đầu tiên, loại bỏ ký tự
không phải là ký tự chữ a-z, giữa họ, chữ lót và tên chỉ có 1 ký tự trắng.

Bộ môn Công nghệ Thông tin Trang 10


Tài liệu Thực hành Lập trình Hướng đối tượng Java

BÀI THỰC HÀNH TUẦN 6, 7, 8, 9, 10


LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG JAVA
1. Viết chương trình tạo một lớp có tên FirstClass, có 1 thuộc tính có tên msg và 2
phương thức có tên getMsg và setMsg lần lượt lấy và gán nội dung thuộc tính
msg.
public class FirstClass {

//Khai báo thuộc tính msg của lớp


private String msg;

public FirstClass(String str) {


msg = str;
}

/**
* @return the msg
*/
public String getMsg() {
return msg;
}

/**
* @param msg the msg to set
*/
public void setMsg(String s) {
this.msg = s;
}

public static void main(String[] args) {


FirstClass f = new FirstClass("Hello");
String msg = f.getMsg();
System.out.println(msg);
msg = msg + " Java";
f.setMsg(msg);
System.out.println(f.getMsg());
}
}
2. Viết chương trình tạo và sử dụng lớp Circle biểu diễn lớp hình tròn gồm có thuộc
tính bán kính R và các phương thức tính chu vi, diện tích hình tròn.
3. Viết chương trình tạo và sử dụng lớp MyMath biểu diễn lớp toán học gồm các
phương thức static:
a. Tìm ước số chung lớn nhất của 2 số nguyên
b. Tìm giá trị lớn nhất của 3 số thực
c. Tìm giá trị nhỏ nhất của 3 số thực
d. Kiểm tra số nguyên tố

Bộ môn Công nghệ Thông tin Trang 11


Tài liệu Thực hành Lập trình Hướng đối tượng Java

e. Tính tổng dãy số từ 1 đến N


f. Hàm tính trị tuyệt đối của 1 số nguyên: abs(int)
g. Hàm làm tròn 1 số thực: round(float)
4. Viết chương trình tạo và sử dụng lớp Point2D gồm các thành phần sau:

Thành phần Mô tả

float x, y Thuộc tính là toạ độ điểm

Point2D() Khởi tạo phương thức mặc định

Point2D(float, float) Phương thức khởi tạo 2 đối số

void move(float dx, float dy) Di chuyển điểm đến vị trí mới
(x+dx, y+dy)

float distance(Point) Tính khoảng cách 2 điểm, áp dụng công thức

d = (x2 − x1 )2 + ( y2 − y1 )2

void display() Hiển thị vị trí của điểm ra màn hình

public class Point2D {

float x, y;

public Point2D() {
this.x = 0;
this.y = 0;
}

public Point2D(float x, float y) {


this.x = x;
this.y = y;
}

public void move(float dx, float dy) {


x += dx;
y += dy;
}

public double distance(Point2D A) {


return Math.sqrt(Math.pow(this.x - A.x, 2) + Math.pow(this.y
- A.y, 2));
}

Bộ môn Công nghệ Thông tin Trang 12


Tài liệu Thực hành Lập trình Hướng đối tượng Java

public void display() {


System.out.println("(" + x + "," + y + ")");
}

public static void main(String[] args) {


//Tao 2 diem A va B
Point2D A, B;
A = new Point2D(3, 4);
B = new Point2D(6, 7);
System.out.println("A co toa do: ");
A.display();
System.out.println("B co toa do: ");
B.display();
//Di chuyen den vi tri moi
A.move(4, 2);
//Hien thi toa do diem A vi tri moi
System.out.println("Toa do moi cua A la: ");
A.display();
//Tinh khoang cach tu A den B
double kc = A.distance(B);
System.out.println("Khoang cach tu A den B la: " + kc);
}
}
5. Viết chương trình tạo và sử dụng lớp Triangle gồm các thành phần sau:

Phương thức Mô tả

float a, b, c Thuộc tính là 3 cạnh của tam giác

Triangle() Hàm khởi tạo mặc định

Triangle(float,float,float) Hàm khởi tạo 3 cạnh của tam giác

isTriangle() Kiểm tra 3 cạnh có hợp lý

isEquilateral() Kiểm tra có phải là tam giác đều

isIsosceles() Kiểm tra có phải là tam giác cân

isRight() Kiểm tra có phải là tam giác vuông

isRightIsosceles() Kiểm tra có phải là tam giác vuông cân

getType() Trả lại kiểu tam giác(vuông, cân, đều,…)

area() Tính diện tích tam giác

display() Hiển thị 3 cạnh, kiểu tam giác và diện tích

Bộ môn Công nghệ Thông tin Trang 13


Tài liệu Thực hành Lập trình Hướng đối tượng Java

6. Viết chương trình tạo lớp Time biểu diễn thời gian với ba thuộc tính giây, phút,
giờ(second, minute, hour) và các phương thức gồm khởi tạo, lấy và thiết lập giá trị
thuộc tính, tăng giờ phút giây lên 1 đơn vị. Tại hàm main tạo đối tượng lớp Time
có giá trị giờ, phút, giây 7,0,0 và sau đó dùng vòng lặp while vô hạng để hiển thị
đồng hồ.
public class Time {
private int hour;
private int minute;
private int second;

public Time(int h, int m, int s) {


setTime(h, m, s);
}

public void setTime(int h, int m, int s) {


setHour(h);
setMinute(m);
setSecond(s);
}

public String toString() {


return ((hour == 12 || hour == 0) ? 12 : hour % 12) + ":" +
(minute < 10 ? 0 + minute : minute) + ":" + (second < 10 ? 0 +
second : second) + " " + (hour < 12 ? "AM" : "PM");
}

public void tick() {


setSecond(second + 1);
if (second == 0) {
incrementMinute();
}
}

public void incrementMinute() {


setMinute(minute + 1);
if (minute == 0) {
incrementHour();
}
}

public void incrementHour() {


setHour(hour + 1);
}

/**
* @return the hour
*/
public int getHour() {
return hour;
}

Bộ môn Công nghệ Thông tin Trang 14


Tài liệu Thực hành Lập trình Hướng đối tượng Java

/**
* @param hour the hour to set
*/
public void setHour(int h) {
hour = (h >= 0 && h < 24) ? h : 0;
}

/**
* @return the minute
*/
public int getMinute() {
return minute;
}

/**
* @param minute the minute to set
*/
public void setMinute(int m) {
minute = (m >= 0 && m < 60) ? m : 0;
}

/**
* @return the second
*/
public int getSecond() {
return second;
}

/**
* @param second the second to set
*/
public void setSecond(int s) {
second = (s >= 0 && s < 60) ? s : 0;
}

public static void main(String[] args) {


Time t = new Time(7, 0, 0);
System.out.println("Thoi gian da thiet lap: " +
t.toString());
while (true) {
try {
System.out.println(t.toString());
Thread.sleep(1000);
t.tick();
} catch (InterruptedException ex) {

Logger.getLogger(Time.class.getName()).log(Level.SEVERE, null, ex);


}
}
}
}

Bộ môn Công nghệ Thông tin Trang 15


Tài liệu Thực hành Lập trình Hướng đối tượng Java

7. Viết chương trình tạo và sử dụng lớp Fraction để biểu diễn lớp phân số gồm các
phương thức sau:
a. Fraction(): Hàm khởi tạo mặc định
b. Fraction(int numerator, int denominator): Hàm khởi tạo giá trị tử số và mẫu số
c. add(Fraction): Cộng hai phân số
d. sub(Fraction): Trừ hai phân số
e. mul(Fraction): Nhân hai phân số
f. div(Fraction): Chia hai phân số
g. inverse(): Nghịch đảo phân số
h. reduce(): Tối giản phân số
i. display(): Hiển thị phân số theo dạng “tử số / mẫu số”
8. Tạo lớp Person gồm 3 thuộc tính name, age, address và các phương thức khởi tạo,
hiển thị các thông tin thuộc tính. Tạo lớp Employee kế thừa lớp Person có thêm 2
thuộc tính salary và rate, các phương thức khởi tạo, tính tổng lương và hiển thị
thông tin nhân viên.
class Person {

private String name;


private int age;
private String address;

public Person(String name, int age, String address) {


this.name = name;
this.age = age;
this.address = address;
}

public String display() {


return "Name: " + name + " Age: " + age + " Address: " +
address;
}
}

public class Employee extends Person {

private float salary;


private float rate;

public Employee(String name, int age, String address, float


salary, float rate) {
super(name, age, address);
this.salary = salary;
this.rate = rate;

Bộ môn Công nghệ Thông tin Trang 16


Tài liệu Thực hành Lập trình Hướng đối tượng Java

public float sumSalary(){


return salary * rate;
}

public String display() {


return super.display() + " Sum Salary: " + sumSalary();
}

public static void main(String[] args) {


Employee em = new Employee("Dung",18,"48 Cao Thang",
1490000,2.34f);
System.out.println(em.display());
}
}
9. Tạo lớp Person gồm các thuộc tính name, age, address và các phương thức như
bảng sau

Phương thức Mô tả

Person() Hàm khởi tạo mặc định

Person(String, int, String) Hàm khởi tạo với 3 đối số

getName() Trả về giá trị thuộc tính name

setName(String) Thiết lập giá trị mới cho thuộc tính name

getAge() Trả về giá trị thuộc tính age

setAge(int) Thiết lập giá trị mới cho thuộc tính age

getAddress() Trả về giá trị thuộc tính address

setAddress(String) Thiết lập giá trị mới cho thuộc tính


address

display() Hiển thị giá trị các thuộc tính

Tạo lớp Student dẫn xuất từ lớp Person, có thêm các thuộc tính math, physics,
chemistry, average và các phương thức như trong bảng sau

Phương thức Mô tả

Student() Hàm khởi tạo mặc định

Student(String name, int age, String Hàm khởi tạo các thuộc tính của lớp
address, float math, float physics, float

Bộ môn Công nghệ Thông tin Trang 17


Tài liệu Thực hành Lập trình Hướng đối tượng Java

chemistry)

getAverage() Trả về điểm trung bình

getMath() Trả về giá trị thuộc tính Math

display() Hiển thị giá trị các thuộc tính

10. Khai báo lớp Shape là lớp trừu tượng(abtract) như sau:
abstract class Shape {

public abstract double area();

public String toString() {


return "Area: " + area();
}
}
Xây dựng lớp Rectangle và Circle kế thừa lớp Shape định nghĩa hình chữ nhật và hình
tròn
public class TestShape {

public static void main(String args[]) {


Shape vec[] = {new Circle(3), new Rectangle(4, 5), new
Circle(4)};
for (int index = 0; index < vec.length; index++) {
System.out.println(vec[index]);
}
}
}

abstract class Shape {

public abstract double area();

public String toString() {


return "Area: " + area();
}
}

class Rectangle extends Shape {

private double width;


private double height;

public Rectangle(double w, double h) {


width = w;
height = h;
}

Bộ môn Công nghệ Thông tin Trang 18


Tài liệu Thực hành Lập trình Hướng đối tượng Java

public double area() {


return width * height;
}

class Circle extends Shape {

private double radius;

public Circle(double r) {
radius = r;
}

public double area() {


return Math.PI * radius * radius;
}
}
11. Tạo lớp hình chữ nhật, có phương thức tính diện tích. Viết chương trình tạo một
mảng gồm 10 đối tượng của lớp hình chữ nhật, sau đó sắp xếp mảng theo chiều
tăng dần của diện tích các đối tượng hình chữ nhật.
import java.util.Arrays;

/**
*
* @author lethiennhatquang
*/
public class RectangleTest {

public static void main(String[] args) {


Rectangles vec[] = new Rectangles[10];
double randomWidth = 0, randomHeight = 0;
for (int i = 0; i < vec.length; i++) {
randomWidth = 100 * Math.random();
randomHeight = 100 * Math.random();
vec[i] = new Rectangles(randomWidth, randomWidth);
}
//Goi ham sap xep mang, lop Rectangles dan xuat interface
Comparable va dinh nghia cu the ham compareTo
Arrays.sort(vec);
for (int i = 0; i < vec.length; i++) {
System.out.println("Area " + i + ": " +
Math.round(vec[i].area()));
}
}
}

abstract class Shapes {

abstract double area();

Bộ môn Công nghệ Thông tin Trang 19


Tài liệu Thực hành Lập trình Hướng đối tượng Java

public String toString() {


return "Area: " + area();
}
}

class Rectangles extends Shapes implements Comparable {

double width;
double height;

public Rectangles(double w, double h) {


width = w;
height = h;
}

public double area() {


return width * height;
}

public int compareTo(Object other) {


Shapes otherRect = (Shapes) other;
return (int) (this.area() - otherRect.area());
}
}
12. Viết chương trình quản lý sinh viên gồm các chức năng cơ bản:
a. Nhập danh sách sinh viên;
b. Xem danh sách sinh viên;
c. Sắp xếp và hiển thị danh sách sinh viên theo chiều tăng dần của điểm trung
bình;
d. Tìm kiếm sinh viên theo tên.
Giả sử mỗi sinh viên được mô tả gồm 3 thuộc tính: id, name, aver
import java.util.Arrays;
import java.util.Enumeration;
import java.util.Vector;

/**
*
* @author lethiennhatquang
*/
public class StudentManagement {

Vector list = new Vector();

public StudentManagement() {
while (true) {
System.out.println("1. Nhap danh sach sinh vien");
System.out.println("2. Xem danh sach sinh vien");

Bộ môn Công nghệ Thông tin Trang 20


Tài liệu Thực hành Lập trình Hướng đối tượng Java

System.out.println("3. Sap xep sinh vien tang dan theo


DTB");
System.out.println("4. Tim sinh vien theo ten");
System.out.println("5. Thoat");
int num;
num = ThuVien.getInt("Nhap mot so de chon chuc nang: ");
switch (num) {
case 1:
this.input();
break;
case 2:
this.view();
break;
case 3:
sort();
break;
case 4:
search();
break;
case 5:
System.out.println("Chuong trinh ket thuc");
return;
}
}
}

public void input() {


int num;
num = ThuVien.getInt("Nhap so luong sinh vien: ");
for (int i = 1; i <= num; i++) {
System.out.println("Nhap thong tin thu: " + i);
int id = ThuVien.getInt("ID: ");
String name = ThuVien.getString("Ten: ");
float aver = ThuVien.getFloat("DTB: ");
Student st = new Student(id, name, aver);
list.add(st);
}
}

public void view() {


//Lay danh sach sinh vien va luu tru o vEnum
Enumeration vEnum = list.elements();
int i = 1;
while (vEnum.hasMoreElements()) {
Student st = (Student) vEnum.nextElement();
System.out.println("Id: " + st.getId() + ", Ten: " +
st.getName() + ", DTB: " + st.getAver());
i++;
}
}

public void sort() {


Student[] st = new Student[list.size()];

Bộ môn Công nghệ Thông tin Trang 21


Tài liệu Thực hành Lập trình Hướng đối tượng Java

int index = 0;
Enumeration vEnum = list.elements();
while (vEnum.hasMoreElements()) {
st[index] = (Student) vEnum.nextElement();
index++;
}
Arrays.sort(st);
for (int i = 0; i < st.length; i++) {
System.out.println("Id: " + st[i].getId() + ", Ten: " +
st[i].getName() + ", DTB: " + st[i].getAver());
}
}

public void search() {


String name = ThuVien.getString("Nhap ten sinh vien can tim
kiem: ");
Enumeration vEnum = list.elements();
System.out.println("Thong tin tim kiem duoc: ");
while (vEnum.hasMoreElements()) {
Student st = (Student) vEnum.nextElement();
if (st.getName().indexOf(name) != -1) {
System.out.println("Id: " + st.getId() + ", Ten: " +
st.getName() + ", DTB: " + st.getAver());
}
}
}

public static void main(String[] args) {


new StudentManagement();
}
}

class Student implements Comparable {

private int id;


private String name;
private float aver;

public Student() {
name = new String("");
id = 0;
aver = 0;
}

public Student(int id, String name, float aver) {


this.id = id;
this.name = name;
this.aver = aver;
}

/**
* @return the id
*/

Bộ môn Công nghệ Thông tin Trang 22


Tài liệu Thực hành Lập trình Hướng đối tượng Java

public int getId() {


return id;
}

/**
* @param id the id to set
*/
public void setId(int id) {
this.id = id;
}

/**
* @return the name
*/
public String getName() {
return name;
}

/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}

/**
* @return the aver
*/
public float getAver() {
return aver;
}

/**
* @param aver the aver to set
*/
public void setAver(float aver) {
this.aver = aver;
}

public int compareTo(Object other) {


Student otherRect = (Student) other;
return (int) (this.aver - otherRect.aver);
}
}

import java.util.Scanner;

public class ThuVien {


public static int getInt(String mess){
System.out.println(mess);
Scanner sc = new Scanner(System.in);
return sc.nextInt();
}

Bộ môn Công nghệ Thông tin Trang 23


Tài liệu Thực hành Lập trình Hướng đối tượng Java

public static String getString(String mess){


System.out.println(mess);
Scanner sc = new Scanner(System.in);
return sc.nextLine();
}

public static float getFloat(String mess){


System.out.println(mess);
Scanner sc = new Scanner(System.in);
return sc.nextFloat();
}
}
13. Viết lớp chứa hàm main cho phép tạo danh sách sinh viên gồm N đối tượng
Student và thực hiện các công việc sau:
a. Nhập giá trị cho danh sách sinh viên
b. Sắp xếp sinh viên theo chiều tăng dần của điểm trung bình(average)
c. Tìm đối tượng sinh viên có điểm toán(Math) lớn nhất
d. Hiển thị tất cả sinh viên có tuổi(age) lớn hơn 23
e. Tìm tất cả sinh viên có họ “Huỳnh”
f. Hiển thị danh sách sinh viên có địa chỉ ở Đà Nẵng
14. Viết chương trình quản lý nhân sự của một công ty gồm các loại nhân sự sau:
a. Giám đốc gồm các thuộc tính: họ tên, ngày sinh, hệ số lương, hệ số chức vụ
b. Quản đốc gồm các thuộc tính: họ tên, ngày sinh, hệ số lương, số lương nhân
viên quản lý
c. Nhân viên gồm các thuộc tính: họ tên, ngày sinh, hệ số lương, tên đơn
vị(phòng/ban)
Chương trình cho phép thực hiện các công việc sau:
• Nhập dữ liệu gồm 01 Giám đốc, 02 Quản đốc, và N Nhân viên
• Hiển thị thông tin các nhân sự
• Hiển thị nhân sự có tổng lương cao nhất(Tổng lương = (Hệ số lương + Hệ số
chức vụ(nếu có)) * 1490000)
• Hiển thị nhân sự có sinh nhật trong tháng 10
• Hiển thị tất cả nhân viên phòng kế toán
• Tìm nhân viên có họ “Huynh”

Bộ môn Công nghệ Thông tin Trang 24


Tài liệu Thực hành Lập trình Hướng đối tượng Java

BÀI THỰC HÀNH TUẦN 11, 12


TRUY XUẤT TỆP TIN(IO STREAM)
1. Sử dụng lớp File, viết chương trình đọc và in ra màn hình nội dung một thử
mục(tên các tệp tin hoặc thư mục con).
2. Sử dụng lớp File, viết chương trình đếm số lượng tệp tin có trong một thư mục(kể
cả các tệp tin có trong các thư mục con).
3. Viết chương trình đếm số lượng ký tự ‘i’ có trong một tệp tin.
4. Viết chương trình hiển thị nội dung tệp tin ra màn hình. Sử dụng FileInputStream
hoặc FileReader.
5. Viết chương trình ghi nội dung “Lap trinh la de dang” xuống một tệp tin trên ổ
đĩa. Sử dụng FileOutputStream hoặc FileWriter. Có thể cải tiến để chương trình
ghi cả một chuỗi xuống tệp tin.
6. Viết chương trình sao chép nội dung tệp tin từ thư mục này sang thư mục khác

Bộ môn Công nghệ Thông tin Trang 25

You might also like