Tải bản đầy đủ (.docx) (31 trang)

ĐỀ CƯƠNG ôn THI JAVA

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (341.59 KB, 31 trang )

HB - 20.6.2013
ĐỀ CƯƠNG ÔN THI JAVA
(bôi đỏ là k12 thi rồi nhé)
Phần 1: Lý thuyết
Câu 1: Thế nào là tính đa hình trong lập trình hướng đối tượng? Tính đóng gói là gì, vai trò của tính
đóng gói là gì và chúng ta thực hiện bằng cách nào trong quá trình lập trình.
• Tính đa hình
Khái niệm: Là hiện tượng các đối tượng thuộc các lớp khác nhau có khả năng hiểu cùng một thông
điệp theo ý nghĩa khác nhau
Ví dụ:
Thông điệp: tính chu vi thì lớp hình vuông và lớp hình tròn sẽ hiểu theo nghĩa khác nhau
• Tính đóng gói
Đóng gói là kết quả của quá trình trừu tượng hóa đối tượng
Đóng gói: thông tin và hoạt động bên trong một đối tượng có thể được che khỏi thế giới bên ngoài
bằng cách che giấu thông tin và thực hiện ẩn.
• Vai trò của tính đóng gói:
Cho phép những người sử dụng chỉ được phép truy nhập và sử dụng những gì quy định cho họ. Một
phần class sẽ được che giấu và không cho người dùng quyền truy nhập.
Cho phép người thiết lế các class có khả năng thay đổi hay định nghĩa lại class mà vẫn chắc chắn
rằng không ảnh hưởng tới chương trình của những người sử dụng lại class này
• Chúng ta thực hiện bằng cách sử dụng các từ khóa để xác định chức năng truy nhập của cá thông tin dữ
liệu bên ngoài lớp: public, private và protected
Câu 2: Định nghĩa tính đa hình, ý nghĩa và vai trò của tính đa hình. Đa hình luôn đi kèm với một tính
năng gì khác của lập trình hướng đối tượng
• Tính đa hình (polymorphism):
Thể hiện thông qua việc gửi các thông điệp (message). Việc gửi các thông điệp này có thể so sánh
như việc gọi các hàm bên trong của một đối tượng. Các phương thức dùng trả lời cho một thông điệp
sẽ tùy theo đối tượng mà thông điệp đó được gửi tới sẽ có phản ứng khác nhau. Người lập trình có thể
định nghĩa một đặc tính (chẳng hạn thông qua tên của các phương thức) cho một loạt các đối tượng gần
nhau nhưng khi thi hành thì dùng cùng một tên gọi mà sự thi hành của mỗi đối tượng sẽ tự động xảy ra
tương ứng theo đặc tính của từng đối tượng mà không bị nhầm lẫn.


• Ý nghĩa tính đa hình:
Khi xây dựng các lớp kế thừa trong LTHDT có thể xảy ra trườn hợp trong lớp kế thừa và lớp cơ sở
cùng định nghĩa một hành vi(hàm) nào đó có giao diện giống nhau. Khi ta gọi hàm này, chương trình
dịch không thể xác định là ta gọi hành vi nào, hành vi được định nghĩa trong lớp cơ sở hay lớp kế thừa.
LTHDT linh động và mềm dèo trong mỗi trường hợp, dễ dàng mở rộng và sử dụng code.
• Vai trò:
Nguyên lý chồng hàm: giúp LTV có khả năng xây dựng các hàm có tên giống hệt nhau nhưng có cá
đối số khác nhau: khác nhau vầ số lượng và kiểu dữ liệu của các đối số.
Nguyên lý chồng toán tử: LTV có khảng năng định nghĩa những toán tử đã tồn tại trong các NNLT
tương ứng trên các dữ liệu mới – các dối tượng thuộc các lớp mà người LTV muốn xây dựng.
• Đa hình luôn đi kèm với sự kế thừa giữa các lớp. Các phương thức tổng quát hóa nên có mặt ở lớp cơ
sở, nhưng nội dung của nó chỉ được xác định ở các lớp dẫn xuất cụ thể
HB - 20.6.2013
Câu 4: Tại sao khi thiết kế lớp, thành phần dữ liệu thường được đi kèm với từ khóa private và việc
thay đổi dữ liệu thường phải thông qua các phương thức? Khi nào thì các phương thức của một lớp được
khai báo là private và vai trò của các phương thức loại này là gi?
• Thành phần private là khu vực dành riêng cho lớp, không chia sẻ với bất kì lớp khác từ bên ngoài.
Thành phần private chỉ cho phép truy nhập trong phạm vi nội bộ lớp: Từ phương thức vào các thuộc
tính hoặc giữa các phương thức của lớp với nhau. Các thành phần private không thể truy nhập từ bên
ngoài lớp, cũng như từ đối tượng khác.
Các thuộc tính dữ liệu của lớp được đặt vào vùng private nhằm bảo vệ chúng, tránh sự truy nhập tự
do từ bên ngoài.
• Các phương thức trung gian, được sử dụng như các bước tính toán đệm cho các phương thức khác. Các
phương thức trung gian được đặt vào vùng private để thực hiện việc đóng gói trong lập trình hướng đối
tượng: Các đối tượng, chương trình bên ngoài không cần, và không thể biết cách tính toán cụ thể bên
trong của lớp.
Câu 5 Sự khác nhau giữa lớp abtract và lớp thông thường như thế nào, cho ví dụ?
Lớp trừu tượng là lớp mà người sử dụng không được phép tạo ra bất kỳ một thể hiện nào của chính lớp
đó “
Lớp thông thường là lớp mà người sử dụng được phép tạo ra các thể hiện của lớp đó.

Trong lớp trừu tượng được phép khai báo các phương thức trừu tượng (chỉ có định nghĩa của hàm còn
nội dung của hàm thì không có) và các phương thức này bắt buộc phải được cài đặt ở lớp dẫn xuất
Lớp thông thường không có hàm trừu tượng.
Lớp trừu tượng là lớp không có khai báo các thuộc tính thành phần và các phương thức. Các lớp
dẫn xuất của nó sẽ khai báo thuộc tính, cài đặt cụ thể các phương thức của lớp trừu tượng.”
Abstract Class dùng trong ứng dụng là dùng để sử dụng chung cho các đối tượng có chung các
thuộc tính hay các chức năng
Normal Class dùng trong ứng dụng để chỉ riêng cho một đối tượng nào đó cụ thể hơn
VD: Human (Con người không biết rõ là ai), Animal (Động vật không biết rõ là con thú nào),
Vehicle (Phương tiện đi lại không biết rõ là phương tiện gì).
+ Human:
*****Thuộc tính******
Tóc, tai, mũi, lưỡi, mắt, tay, chân, mông, bộ phận sinh dục
*****Chức năng*******
Nghe, nói, đọc, viết, đi, đứng, nằm, ngồi, đi tiểu
(Đó là dành cho tất cả nếu đó là con người)
+ Đối tượng thể hiện cho Normal Class Male, Female
Anh Nguyễn Văn A: Tóc ngắn - Nghe nói đọc viết thì như người bình thường nhưng lúc
đi Tiểu thì lại đứng khuỵa đầu gối
Anh Nguyễn Văn B: Đầu trọc - Nghe nói đọc viết thì cũng như người bình thường
nhưng lúc đi Tiểu thì lại đứng thẳng chân
Chị Nguyễn Thị C: Tóc dài thướt tha - Cũng như 2 anh kia nhưng đi Tiểu lại ngồi
Bởi thế Human mới được gọi là "TRỪU TƯỢNG" vì mình không thể hình dung đc Human đi
Tiểu ra sao? Dáng đẹp thế nào?
Và chính vì những điều trên nên trong lúc Code mới thấy là Abstract Class không thể khởi tạo
đối tượng cụ thể đc bởi vì nó là Trừu Tượng nên đâu có thuộc tính cụ thể và chức năng cụ thể
giống như một Real Object!!!
Câu 6 Nêu bản chất của cơ chế kế thừa, nêu sự khác biệt giữa mối quan hệ “has-a” và “is a”
• Bản chất của cơ chế kế thừa: Là việc xây dựng một lớp mới dựa trên một lớp có sẵn . Trong lớp mới sẽ
sử dụng lại mã code của lớp ban đầu và phát triển them những tính chất mới.

• Mối quan hệ has-a: Dùng các đối tượng của các lớp đã có sẵn để xây dựng một lớp mới. Điều đó có
nghĩa là lớp mới chứa các đối tượng khác bên trong nó, và nó được quyền sử dụng mọi tài nguyên
(phương thức) mà các lớp sẵn có đã cung cấp cho nó qua các đối tượng mà nó đang nắm giữ.
• Mối quan hệ is-a: Chúng ta xây dựng một lớp mới từ một lớp cũ bằng quan hệ kế thừa. Lớp mới này
được phép coi như là một đối tượng ở cũ và nó được phép kế thừa tất cả những gì mà lớp cha nó đã có
HB - 20.6.2013
(kể cả những thành phần private). Tuy nhiên việc được dùng các đối tượng này hay không thì phụ
thuộc vào quyền truy nhập mà lớp cha đã cho nó (thông qua các chỉ thị protected và public).
Phần 2: Bài tập (cái nào có khả năng “trúng” thì t trình bày trước)
CÂU 7:
Đề bài: Học viện Ngân hàng muốn xây dựng hệ thống giúp sinh viên đăng ký môn học bao gồm những
thông tin sau:
- Mỗi sinh viên có: mã sv, tên, năm vào trường
- Mỗi môn học bao gồm: mã môn, tên môn, danh sách môn điều kiện.
- Sau khi học xong, sinh viên được ghi nhận đã đạt môn đó nếu điểm thi của sinh viên đạt từ 5 điểm
trở lên.
Khi sinh viên đăng ký môn học, hệ thống sẽ kiểm tra xem sinh viên đã thi đạt tất cả các môn trong
điều kiện tiên quyết chưa, nếu điều kiện trên không thỏa mãn in ra thông báo không được phép đăng ký.
a) Mô tả các lớp, giao diện cần xây dựng để đáp ứng yêu cầu của bài toán trên
b) Cài đặt các lớp đã được mô tả
c) Viết chương trình thử thực hiện những chức năng sau:
-Yêu cầu người dùng nhập một mảng gồm 5 sinh viên
- Yêu cầu người dùng nhập một danh sách môn học (khoảng 5-8 môn)
- Yêu cầu người dùng chọn sinh viên muốn đăng ký môn học, chọn môn sinh viên đăng ký, lưu lại
thông tin đăng ký nếu thành công còn ngược lại in ra thông báo tương ứng.
Bài làm
1. Mô tả các lớp
SinhVien
- maSV: String
- tenSV: String

- namVT: int
+ SinhVien()
+ SinhVien(String maSV, String tenSV, int namVT)
+ toString(): String
+ view(): void
+ Input(): void
MonHoc
- maMH: String
- tenMH: String
- MonHoc[] MHDK;
+ MonHoc(String MaMH, String TenMH, MonHoc[] MHDK)
+ toString(): String
+ view(): void
+ DangKy(SinhVien sv): void
+ Input(): void
KQHT
(extends SinhVien)
- mh: MonHoc
- Diem: int
+ KQHT();
+ KQHT(SinhVien sv,MonHoc mh, int Diem);
HB - 20.6.2013
+ checkPass(): boolean
2. Cài đặt
Class SinhVien
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package bai7;

import java.util.Date;
public class SinhVien {
protected String MaSV;
protected String TenSV;
protected int NamVao;
public SinhVien(){};
public SinhVien(String MaSV, String TenSV, int NamVao){
this.MaSV=MaSV;
this.TenSV=TenSV;
this.NamVao=NamVao;
}

public void view(){
System.out.println("Mã SV: "+this.MaSV);
System.out.println("Ten SV: "+this.TenSV);
System.out.println("Nam Vao Truong: "+this.NamVao);
}
@Override
public String toString(){
return this.MaSV+" "+this.TenSV+" "+this.NamVao;
}
public void Input(){
System.out.println("Ma SV:");
MaSV = get.nextLine();
System.out.println("Ten SV:");
TenSV = get.nextLine();
System.out.println("Nam Vao:");
NamVao = get.nextInt();
get.nextLine();
}

public boolean checkDSDK(MonHoc mh){
//Lấy dữ liệu từ bảng KQHT của SV
//Kiểm tra kết quả đó với danh sách môn học của môn học "mh" cần đăng ký
//Nếu ko thỏa mãn
//return false; còn không
return true;
}

}
Class MonHoc
HB - 20.6.2013
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package bai7;
public class MonHoc {
private String MaMH;
private String TenMH;
private MonHoc[] MHDK;

public MonHoc(String MaMH, String TenMH, MonHoc[] MHDK){
this.MaMH=MaMH;
this.TenMH=TenMH;
this.MHDK=MHDK;
}

@Override
public String toString(){
return this.MaMH+" "+this.TenMH;

}

public void view(){
System.out.println("Ma MH: "+this.MaMH);
System.out.println("Ten MH: "+this.TenMH);
String DSMH="Danh sách các môn học";
if(this.MHDK.length>0)
for(int i=0; i<this.MHDK.length; i++)
DSMH = DSMH+"\n"+MHDK[i].MaMH.toString();
else DSMH="";
System.out.println(DSMH);

}

public void DangKy(SinhVien sv){
if(sv.checkDSDK(this))
System.out.println("Đăng ký thành công");//Lưu dữ liệu vào CSDL
else
System.out.println("Không thể đăng ký");
}
}
Class KQHT
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package bai7;
public class KQHT extends SinhVien{
private MonHoc mh;
private int Diem;

public KQHT(){
super();
HB - 20.6.2013
this.Diem=0;
}
public KQHT(SinhVien sv,MonHoc mh, int Diem){
super(sv.MaSV, sv.TenSV, sv.NamVao);
this.mh=mh;
this.Diem=Diem;
}
public void view(){
//Code
}
public boolean checkPass(){
if(this.Diem<5) return false;
else return true;
}

}
3. Viết chương trình thực nghiệm
Class Main
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package bai7;
import java.util.Date;
import java.util.Scanner;
public class Main {
/**

* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
//Demo
SinhVien[] sv = new SinhVien[100];
MonHoc[] mh = new MonHoc[100];
//Nhập thông tin môn học
Scanner get = new Scanner(System.in);
for (int i = 0; i < 5; i++)
System.out.println(“Nhập thông tin sinh viên thứ : ”+ (i+1));
sv[i].Input();

}
for (int i = 0; i < 5; i++) {
int countMHDK = 0;
System.out.println("Ma MH:");
MaMH = get.nextLine();
System.out.println("Ten MH:");
TenMH = get.nextLine();
System.out.println("Có môn học điều kiện không? 1/0 - Yes/No");
countMHDK = get.nextInt();
HB - 20.6.2013
get.nextLine();
if (countMHDK == 1) {
System.out.println("Nhập các môn điều kiện");
//Code demo
}
mh[i] = new MonHoc(MaMH, TenMH,null);
}

//In ra DSSV để chọn
int chonSV = 0;
int chonMH = 0;
for (int i = 0; i < 5; i++) {
System.out.println("Chọn " + (i + 1) + ":"+sv[i].toString());

}
chonSV = get.nextInt();
if (chonSV > 0 && chonSV <= 5) //In ra các môn học
{
for (int j = 0; j < 5; j++) {
System.out.println("Chọn " + (j + 1) + ":" + mh[j].toString());
}
chonMH = get.nextInt();
if (chonMH > 0 && chonMH <= 5) {
//Đăng ký - Vì trong hàm Đăng ký đã có thao tác kiểm tra nên trong này chúng ta không cần
gọi nữa
mh[chonMH - 1].DangKy(sv[chonSV - 1]);
}
}
}
}
Câu 9:
Đề bài: Cửa hàng đĩa CD cho thuê băng đĩa muốn xây dựng hệ thống cho thuê băng đĩa:
- Mỗi đĩa cd sẽ gồm các thông tin sau: Thể loại, tên, số lượng, giá thuê
-Khách hàng đến thuê sẽ cung cấp các thông tin sau: Tên, Địa chỉ, số tiền đặt cọc.
- Mỗi lần tới thuê khách hàng sẽ được thuê một hay nhiều đĩa CD, hệ thống sẽ lưu lại ngày thuê, tới khi
khách hàng trả đĩa hệ thống sẽ tính số tiền mà khách hàng cần phải đưa thêm sau khi đã trừ đi số tiền mà khách
hàng đã đặt cọc.
- Hệ thống sẽ lưu lại thông tin tương ứng của nhân viên đã thực hiện việc cho khách hàng thuê đĩa nhằm

thực nhằm đối chiếu khi có sai sót.
a) Hãy mô tả các lớp cần thực hiện để xây dựng hệ thống
b) Cài đặt các lớp đã được mô tả
c) Viết chương trình thử nghiệm thực hiện các chức năng sau:
- Nhập thông tin khách hàng
- Nhập danh sách đĩa CD mà khách hàng muốn thuê
- Nhập lượng tiền mà khách hàng đã đặt cọc cho người bán hàng
- Nhập tên nhân viên đã thực hiện dịch vụ cho khách hàng
- Lưu lại thông tin vào file log.txt
Thông tin cho thuê đĩa của khách hàng: (tên kh)….
Thể loại: nhạc thiểu nhi, tên: Con cò bé bé, số lượng: 1, giá thuê: 1000đ/ngày
Thể loại: phim truyện, tên: Cánh đồng cát, số lượng:2, giá thuế 2000đ/ngày
Số tiền đặt cọc: 100.000đ

1. Mô tả các lớp
HB - 20.6.2013
KH
- TenKH: String
- DiaChi: String
- DatCoc: float
- KH()
- KH(String TenKH, String DiaChi, float DatCoc)
- toString(): String
- NhapTTKH(): void
- Thue(CD[] cd): int
- TongTien(CD[] cd, int n): float
- TienThieuHoacThua(float TongTien): float
CD
- TheLoai: String
- TenCD: String

- SoLuong: int
- DonGia: int
- CD()
- CD(String TheLoai, String TenCD, int SoLuong, int DonGia)
- toString(): String
- NhapTTCD(): void
- TongTien(): float
2. Cài đặt
Class CD
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package bai9;
import java.util.Scanner;
public class CD {
private String TheLoai;
private String TenCD;
private int SoLuong;
private int DonGia;

public CD(){};
public CD(String TheLoai, String TenCD, int SoLuong, int DonGia){
this.TheLoai=TheLoai;
this.TenCD=TenCD;
this.SoLuong=SoLuong;
this.DonGia=DonGia;
}
@Override
HB - 20.6.2013

public String toString(){
return this.TheLoai+" - "+this.TenCD+" - "+this.SoLuong+" - "+this.DonGia;
}
public void NhapTTCD(){
Scanner get = new Scanner(System.in);
System.out.println("Thể loại: ");
this.TheLoai=get.nextLine();
System.out.println("Tên CD: ");
this.TenCD=get.nextLine();
System.out.println("Số lượng: ");
this.SoLuong=get.nextInt();
System.out.println("Đơn giá: ");
this.DonGia=get.nextInt();
get.nextLine();
}
public float TongTien(){
return this.SoLuong*this.DonGia;
}
}
Class KH
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package bai9;
import java.util.Scanner;
public class KH {
private String TenKH;
private String DiaChi;
private float DatCoc;

public KH() {
}
;
public KH(String TenKH, String DiaChi, float DatCoc) {
this.TenKH = TenKH;
this.DiaChi = DiaChi;
this.DatCoc = DatCoc;
}
@Override
public String toString() {
return "Ten: " + this.TenKH + "\nDia chi: " + this.DiaChi + "\nDat coc: " + this.DatCoc;
}
public void NhapTTKH() {
Scanner get = new Scanner(System.in);
System.out.println("Tên KH: ");
this.TenKH = get.nextLine();
System.out.println("Địa chỉ");
this.DiaChi = get.nextLine();
System.out.println("Đặt cọc: ");
this.DatCoc = get.nextFloat();
HB - 20.6.2013
get.nextLine();
}
public int Thue(CD[] cd) {
int checkNhapCD = 1;
int i = 0;
do {
Scanner get = new Scanner(System.in);
System.out.println("Nhập đĩa CD 1/0 - Yes/No");
checkNhapCD = get.nextInt();

get.nextLine();
if (checkNhapCD == 0) {
break;
} else {
cd[i]=new CD();
cd[i].NhapTTCD();
i++;
}
} while (checkNhapCD != 0);
return i;
}
public float TongTien(CD[] cd, int n){
//n là số loại đĩa thuê
//Mỗi lần nhập đĩa ko cho phép trùng thể loại
float sum=0;
while(n>0)
{
sum=sum+cd[n-1].TongTien();
n ;
}
return sum;
}
public float TienThieuHoacThua(float TongTien){
return this.DatCoc-TongTien;
}
}
3. Viết chương trình thử nghiệm
Class Main
/*
* To change this template, choose Tools | Templates

* and open the template in the editor.
*/
package bai9;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws IOException {
HB - 20.6.2013
// TODO code application logic here
KH kh = new KH();
CD[] cd = new CD[100];
System.out.println("Nhập thông tin KH");
kh.NhapTTKH();
System.out.println("Nhập thông tin CD khách hàng cần thuê");
int n = kh.Thue(cd);
int k=n;
//System.out.println(n);
//Nhập ttin nhân viên chúng ta tự làm nhé :)
//In ra file
File f = new File("Bai9.doc");
PrintWriter print = new PrintWriter(f);
try{
print.println(new Date());
print.println("Thong tin khach hang");

print.println(kh.toString());
print.println("Thong tin CD");
while(k>0)
{
print.println(cd[k-1].toString());
k ;
}
print.println("Tong Tien:"+kh.TongTien(cd, n));
if(kh.TienThieuHoacThua(kh.TongTien(cd, n))>0)
print.println("Tien Thua: "+kh.TienThieuHoacThua(kh.TongTien(cd, n)));
else
print.println("Tien Thieu: "+ (0-kh.TienThieuHoacThua(kh.TongTien(cd, n))));
print.close();
} catch(Exception e)
{
System.out.println(e.toString());
}
}
}
Câu 4:
Đề bài:Trong hệ thống có các đối tượng sau: Person, Student, Employee, Faculty, and Staff, hãy xây dựng lớp
Person có 2 lớp con là Employee và Student. Lớp Faculty và Staff là 2 lớp con của lớp Employee.
Một đối tượng Person thì sẽ có các thông tin sau: name, address, phone number, and email address. Một
sinh viên sẽ có một mã trạng thái về lớp học của mình (freshman, sophomore, junior, or senior). Một nhân viên
thì sẽ có các thông tin về office, salary, ngày ra nhập. Ghi đè phương thức toString() trong mỗi lớp để hiện thi
tên class và tên của mỗi người.
 Tạo lớp person:
public class Person {
protected String name,phone,address,email;
public Person(String name, String phone, String address, String email) {

this.name = name;
this.phone = phone;
this.address = address;
this.email = email;
}
public Person() {
HB - 20.6.2013
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {

this.phone = phone;
}
@Override
public String toString()
{
return “ Person ”+ name;
}
 Tạo lớp employee:
public class employee extends Person {
protected String office,salary,time;
public employee(String name,String phone,String address,String email, String office, String
salary, String time)
{
super(name, phone, address, email);
this.office= office;
this.salary= salary;
this.time= time;
}
public String getOffice()
{
return office;
}
public String getSalary()
{
return salary;
}
public String getTime()
HB - 20.6.2013
{
return time;

}
public void setOffice(String office)
{
this.office=office;
}
public void setSalary(String salary)
{
this.salary=salary;
}
public void setTime(String time)
{
this.time=time;
}
@Override
public String toString()
{
return "Employee" + Name;
}
}
 Tạo lớp Student:
public class Student extends Person {
protected String status;
public Student(String name,String phone,String address,String email,String status)
{
super(name, phone, address, email);
this.status=status;
}
public String getStatus() {
return status;
}

public void setStatus(String status) {
this.status = status;
}
@Override
public String toString()
{
return "Student " + Name;
}
}
 Tạo lớp Falcuty:
public class Falcuty extends Student{
protected String nameF;
public Falcuty(String name, String phone, String address, String email, String status, String
nameF) {
super(name, phone, address, email, status);
this.nameF=nameF;
}
public String getNameF() {
return nameF;
}
HB - 20.6.2013
public void setNameF(String nameF) {
this.nameF = nameF;
}
}
 Main:
public static void main(String[] args) {
Student st= new Student("asd", "asd", "asd", "asda", "as") ;
st.toString();
Person pes= new Person("asda", "asd", "asd", "asda") ;

pes.toString();
}
Câu 8:
Đề bài: Một hệ thống ngân hàng xây dựng hệ thống quản lý khách hàng như sau:
- Mỗi khách hàng chỉ được phép có một tài khoản
- Thông tin mỗi khách hàng bao gồm: Mã KH, tên, số chứng minh thư, địa chỉ
- Thông tin mỗi tài khoản bao gồm: Mã TK, khách hàng tương ứng, số tiền
- Mỗi điều chỉnh về thông tin tài khoản sẽ do nhân viên ngân hàng thực hiện theo yêu cầu của khách hàng,
thông tin nhân viên bao gồm: MaNV, tên, chi nhánh làm việc
Ngân hàng có thể thực hiện các giao dịch sau:
- Mở một tài khoản mới cho khách hàng, khi tạo mới nếu KH không gửi tiền thì mặc định số tiền là 0.
- Gửi tiền vào tài khoản theo yêu cầu của khách hàng rồi cập nhật lại thông tin tài khoản tương ứng
- Rút tiền khỏi tài khoản theo yêu cầu: nếu lượng tiền cần rút nhỏ hơn số tiền còn trong tài khoản thì cho
phép rút, nêu lớn hơn in ra thông báo.
- Sau khi mỗi giao dịch được thực hiện, thông tin thay đổi trên tài khoản sẽ được lưu vào một file log.txt bao
gồm các thông tin sau:
Tên tài khoản, ngày thực hiện giao dịch, kiểu giao dịch (gửi /rút), số tiền giao dịch, số tiền hiện có trong tài
khoản, mã NV thực hiện giao dịch
a) Hãy mô tả các lớp, giao diện cần xây dựng để đáp ứng yêu cầu của hệ thống
b) Cài đặt các lớp đã được mô tả
c) Viết chương trình thử nghiệm các chức năng sau: Tạo mới tài khoản, gửi tiền vào tài khoản đó, rút tiền ra
khỏi tài khỏa
 Tạo lớp khách hàng:
import java.io.*;
public class KH implements face{
private String MaKH;
public void setMa(String ma)
{
this.MaKH=ma;
}

private String TenKH;
private String CMT;
private String Diachi;
public KH(){}
public KH(String ma,String ten,String cmt,String diachi)
{
this.MaKH=ma;
this.TenKH=ten;
this.CMT=cmt;
this.Diachi=diachi;
}
public void viewKH()
{
System.out.println(MaKH);
System.out.println(TenKH);
System.out.println(CMT);
HB - 20.6.2013
System.out.println(Diachi);
}
@Override
public void Rut() throws IOException {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void viewTK() {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void Gui() throws IOException {
throw new UnsupportedOperationException("Not supported yet.");

}
@Override
public TK Create() {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void viewNV() {
throw new UnsupportedOperationException("Not supported yet.");
}
}
 Tạo lớp nhân viên:
import java.io.IOException;
public class NV implements face{
private String MaNV;
private String TenNV;
private String Chinhanh;
public NV(){}
public NV(String ma,String ten,String chinhanh)
{
this.MaNV=ma;
this.TenNV=ten;
this.Chinhanh=chinhanh;
}
public void viewNV()
{
System.out.println(MaNV);
System.out.println(TenNV);
System.out.println(Chinhanh);
}
@Override

public void Rut() throws IOException {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void viewTK() {
throw new UnsupportedOperationException("Not supported yet.");
}
HB - 20.6.2013
@Override
public void Gui() throws IOException {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public TK Create() {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void viewKH() {
throw new UnsupportedOperationException("Not supported yet.");
}
}
 Tạo lớp Tài khoản:
import java.util.Scanner;
import java.io.*;
public class TK implements face{
private String MaTK;
private String MaKH;
private float Sotien;
public TK(){}
public TK(String MaTK,String MaKH,float Sotien)

{
this.MaTK=MaTK;
this.MaKH=MaKH;
this.Sotien=Sotien;
}
public TK Create()
{
Scanner get = new Scanner(System.in);
System.out.println("nhập mã TK");MaTK=get.nextLine();
System.out.println("nhập tên kh");MaKH=get.nextLine();
TK a= new TK(MaTK,MaKH,0);
return a;
}
public void Rut() throws IOException
{
float sotienrut;
Scanner get = new Scanner(System.in);
System.out.println("nhập số tiền muốn rút"); sotienrut=get.nextFloat();
if(this.Sotien>=sotienrut)
{
this.Sotien=this.Sotien-sotienrut;
System.out.println("Rút tiền thành công");
}
else
{
System.out.println("Không đủ tiền để rút");
}
File f = new File("Bai8.text");
FileWriter write = new FileWriter(f);
PrintWriter out = new PrintWriter(write);

try
{
out.println("Số tài khoản: " + MaTK);
out.println("Chủ tài khoản: " + MaKH);
HB - 20.6.2013
out.println("Số tiền trước khi giao dịch :" + Sotien);
out.println("Số tiền rút: " + sotienrut);
out.println("Số tiền còn lại: " + (Sotien -sotienrut));
}
catch(Exception e)
{
System.out.println(e.toString());
}
}
public void Gui() throws IOException
{
float sotiengui;
Scanner get = new Scanner(System.in);
System.out.println("nhập số tiền muốn gui"); sotiengui=get.nextFloat();
this.Sotien = this.Sotien+sotiengui;
File f = new File("Bai8.text");
FileWriter write = new FileWriter(f);
PrintWriter out = new PrintWriter(write);
try
{
out.println("Số tài khoản: " + MaTK);
out.println("Chủ tài khoản: " + MaKH);
out.println("Số tiền trước khi giao dịch :" + Sotien);
out.println("Số tiền gửi: " + sotiengui);
out.println("Số tiền còn lại: " + (Sotien +sotiengui));

}
catch(Exception e)
{
System.out.println(e.toString());
}
}
public void viewTK()
{
System.out.println(MaTK);
System.out.println(MaKH);
System.out.println(Sotien);
}
@Override
public void viewNV() {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void viewKH() {
throw new UnsupportedOperationException("Not supported yet.");
}
}
 Tạo một interface:
import java.io.IOException;
public interface face {
public void Rut() throws IOException;
public void viewTK();
public void Gui() throws IOException;
public TK Create();
public void viewNV();
public void viewKH();

HB - 20.6.2013
 Hàm main:
import java.io.IOException;
public static void main(String[] args) throws IOException {
face a = new TK();
a.Create();
a.Gui();
a.viewTK();
a.Rut();
a.viewTK();
face b = new KH("AAA", "BBBB", "123456789", "HN");
b.viewKH();
}
Câu 5:
Đề bài: Xây dựng một lớp MyInteger. Lớp này có những thông tin như sau:
- một thuộc tính kiểu int đặt tên là value thể hiện giá trị của đối tượng
- Một phương thức khới tạo với tham số kiểu int
- một phương thức trả về giá trị của thuộc tính value
- Các phương thức isEven(), isOdd() trả về true hay True nếu thuộc tính value của đối tượng là chẵn, lẻ lần
lượt tương ứng với 2 phương thức và Faul nếu ngược lại.
- Xây dựng các phương thức tĩnh isEvan(int), isEven(MyInteger), isOdd(int), isOdd(MyInteger) trả về giá trị
true nếu thông tin của tham số đầu vào của phương thức là chẵn hay lẻ.
- Xây dựng 2 phương thức so sánh bằng: equals(int) và equals(MyInteger)
 Tạo lớp Interger:
public class Integer {
private int values;
public Integer(){}
public Integer(int values)
{
this.values = values;

}
public int getvalues()
{
return values;
}
public boolean isEvan()
{
if(values%2==0) return true;
else return false;
}
public boolean isOdd()
{
if(values%2==1) return true;
else return false;
}
public static boolean isEvan(int values)
{
if(values%2==0) return true;
HB - 20.6.2013
else return false;
}
public static boolean isEvan(Integer a)
{
if(a.values%2==0) return true;
else return false;
}
public boolean equals(int a)
{
if(this.values==a) return true;
else return false;

}
public boolean equals(Integer a)
{
if(this.values==a.values) return true;
else return false;
}
}
 Hàm main:
public static void main(String[] args) {
Integer a = new Integer(5);
System.out.println(Integer.isEvan(a));
System.out.println(Integer.isEvan(6));
}
Câu 3: Cho một sơ đồ lớp như sau:
HB - 20.6.2013

a) Nhìn vào sơ đồ lớp bạn hãy liệt kê các thuộc tính cần thiết của lớp employee, và hãy cài đặt lớp này sao
cho phương thức toSTring() hiển thị cả 3 thông số: firstname, lastname, birthday
b) Hãy cài đặt lớp Ajarn (phân h giảng) con của lớp Employee thể hiện thông tin về một nhân viên sẽ
được tính tiền công dựa trên sĩ số sinh viên của lớp họ. Lớp Ajarm nê chứa thuộc tính private wage (chứa
thống tin về tiền lương của nhận viên / 1 sinh viên) và numberStudents (lưu trữ số sinh viên trong một
lớp). Xây dựng phương thức earnings() trong lớp Ajarm. Kiểm tra kết quả lập trình của mình trên lớp
EmsTest.java.
c) Tạo ra một mảng các “Employees” và sắp xếp lại mảng này theo thứ tự giảm dần của thu nhập rồi hiển
thị tên nhân viên và thu nhập tương ứng của họ ra màn hình.
 Tạo 1 lớp Date chứ thông tin dạng ngày tháng:
public class Date {
protected int ngay,thang,nam;
public Date(){}
public Date(int ngay,int thang,int nam)

{
this.ngay=ngay;
this.thang=thang;
this.nam=nam;
}
}
 Lớp employee:
public class Employee {
protected String FirstName;
protected String LastName;
protected float earnings;
HB - 20.6.2013
protected Date birthday;
public Employee(){}
public Employee(String firstname,String lastname)
{
this.FirstName=firstname;
this.LastName=lastname;
}
public Employee(String firstname,String lastname,float earnings,Date birthday)
{
this.FirstName=firstname;
this.LastName=lastname;
this.earnings=earnings;
this.birthday=birthday;
}
public String toString()
{
return LastName + " " + FirstName;
}

public void view()
{
System.out.println(FirstName +" " + LastName + " " + earnings);
}
 Tạo lớp Ajarn:
public class Ajarn extends Employee{
private float wage;
private int numberStudent;
public Ajarn(){}
public Ajarn(Employee a,float wage,int numberStudent)
{
super(a.FirstName,a.LastName,a.earnings,a.birthday);
this.wage = wage;
this.numberStudent = numberStudent;
}
public float earnings()
{
this.earnings= earnings + wage*numberStudent;
return earnings;
}
}
 Hàm main:
public static void main(String[] args) {
Date date = new Date(5,1,1991);
Employee a = new Employee("Nguyen","Tien",0,date);
System.out.println(a.toString());
Ajarn a1 =new Ajarn(a,5000,30);
a.earnings = a1.earnings();
a.view();
HB - 20.6.2013

Ajarn a2 =new Ajarn(a,5000,30);
a.earnings = a2.earnings();
a.view();
}
Câu 1: Hãy cài đặt lớp Stack làm việc được với tất cả các loại đối tượng
Import java.util.ArrayList;
public class Stack {
private ArrayList arr;
public Stack(){
arr = new ArrayList ();
}
public void push (Object o){
arr.add(o);
}
public Object pop(){
Object o = new Object();
if(!arr.isEmpty()){
o = arr.get(arr.size()-1);
arr.remove(arr.size()-1);
}
return o;
}
}
Câu 2: Hãy cài đặt lớp Queue làm việc được với tất cả các loại đối tượng
 Tạo lớp Queue1:
import java.util.*;
public class Queue{
private Arraylist arr;
public Queue()
{

arr= new Arraylist();
}
public void pushQ( Object o)
{
arr.add(o);
}
public Object pop()
HB - 20.6.2013
{
Object a = new Object();
a= arr.get(0);
arr.remove(a);
return a;
}
public int Size()
{
int dem=0;
dem=arr.size();
return dem;
}
}
 Hàm main:
import java.util.*;
public static void main(String[] args) {
Queue q= new Queue();
q.push(“Ha Noi”);
q.push(1);
q.push(1.5);
int temp = q.Size();
for(int i =0 ; i<temp ;i++)

{
System.out.println(q.pop() );
}
}
Câu 6:
Cho thiết kế sau:
HB - 20.6.2013
a) Cài đặt thiết kế trên bằng java: với kiểu dữ liệu sinh viên tự xác định vớ chú ý như sau:
lớp Coach (huấn luyện viên) với thuộc tính year chỉ số năm đã làm huấn luyện viên
b) Cài đặt chương trình thử nghiệm:
- Nhâp vào tên của một đội, rồi nhập danh sách thành viên, huấn luyện viên của đội. Lưu tất cả thông tin vào
một tệp với định dạng như sau:
o0o
Đội: Hoa anh Đào
Số thành viên :5
1: Nguyễn hoàng anh: 20 tuổi, việt nam
2: Nguyễn như minh: 21 tuổi, việt nam
………………………………
Huấn luyện viên: Nguyễn Minh Minh, 45 tuổi, việt nam, 5 năm kinh nghiệm
o0o
 Tạo lớp Person:
public class Person {
protected String Name;
protected String National;
protected int Age;
public Person(){}
public Person(String name,String national,int age)
{
this.Name = name;
this.National = national;

this.Age = age;
}
public void Display()
{
System.out.print(Name + " " + Age + " " + National);
}
}
 Tạo lớp Player:
public class Player extends Person{
private String position;
private int number;
HB - 20.6.2013
public Player(){}
public Player(String name,String national,int age,String position,int number)
{
super(name,national,age);
this.position = position;
this.number = number;
}
@Override
public String toString()
{
return Name + " " + Age + " " + National;
}
}
 Tạo lớp Coach:
public class Coach extends Person{
protected int year;
public Coach(){}
public Coach(String name,String national,int age,int year)

{
super(name,national,age);
this.year=year;
}
@Override
public String toString()
{
return "Huấn luyện viên: "+Name + ", " + Age + ", " + National + ", " + year + " năm kinh
nghiệm";
}
 Tạo lớp Team:
public class Team {
protected String name;
protected Coach coach;
protected Player[] players;
public Team(){}
public Team(String name,Coach coach,Player[] players)
{
this.name=name;
this.coach=coach;
this.players=players;
}
public void Display()
{
System.out.println(" o0o ");
System.out.println(name);
System.out.println("So thanh vien" + players.length);
for(int i=0;i<players.length;i++)
{System.out.print((i+1) + ":");players[i].Display();
System.out.println("");

}
System.out.print("Huan luyen vien:"); coach.Display();
System.out.println(" " + coach.year +" nam kinh nghiem");
}
}
 Main:
import java.io.*;

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×