Tải bản đầy đủ (.doc) (7 trang)

Đề cương môn lập trình hướng đối tượng với 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 (699.71 KB, 7 trang )

NHĐT Java-Nguyễn Thịnh Chiến-wWw.EbookSo1.Com
Đây là đề cương mơn lập trình hướng đối tượng với Java do thầy Nguyên-trường
ĐH CNTT-TT Thái Nguyên đưa ra
Trong bộ đề cương này có cả lý thuyết và bài tập cho các bạn ôn tập
Chúc tập thể K8e thi thật tốt nhé
Rảnh thì ghé thăm diễn đàn chia sẻ tài liệu học tập
=======================================================

Lý thuyết .
● Hãy nêu khái niệm: lớp các đối tượng , đối tượng, lập trình hướng đối tượng
trong ngơn ngữ lập trình hướng đối tượng
 Lớp là một khái niệm trìu tượng dùng để biểu diễn một tập các đối tượng, có một
vài đặc điểm chung nào đó
● Nêu các quy tắc truyền tham số trong ngôn ngữ java
 trong java chỉ có duy nhất 1 cách truyền tham số là: truyền tham trị
Không tồn tại truyền tham chiếu
- Truyền một biến nguyên: hi bạn chuyền một biến kiểu nguyên cho một phương
thức thì java sẽ tạo ra một bản sao cho biến ngun đó. Vì thế mọi thay đổi của
biến trong phương thức đó đều khơng ảnh hưởng tới biến ban đầu
- Truyền dữ liệu kiểu reference:
Trước hết mình cùng phân tích một statement:
MyClass a = new MyClass();
Khi thực hiện câu lệnh này, Java tạo ra một đối tượng trong bộ nhớ (khơng cần quan tâm
nó nằm ở đâu) và trả về một giá trị tham chiếu đến đối tượng đó. Như vậy a không phải là
một đối tượng mà chỉ là một reference tới đối tượng mà thơi.
Mình cùng phân tích một statement tiếp theo:
MyClass b = a;
Mặc dù sau câu lệnh này mình có hai giá trị a, b khác nhau. Nhưng hai reference bằng
nhau sẽ chỉ đến cùng một đối tượng nên hai giá trị a và b sẽ chỉ đến cùng một đối tượng
trong bộ nhớ. Vì cùng chỉ đến một đối tượng duy nhất nên khi a thay đổi thì b sẽ bị ảnh
hưởng và ngược lại. Chính vì điểm này nên khi gán một reference vào một phương thức thì


bản copy của reference này sẽ gây thay đổi đến đối tượng thực trong bộ nhớ.
Cơ chế của 1 và 2 là như nhau. Nhưng bạn cần tìm hiểu kỹ về hai loại data này để hiểu tốt
hơn tại sao đối tượng bị thay đổi khi gán và một phương thức.

Câu 1:
● Hãy nêu các khái niệm kế thừa, đa hình, trong lập trình hướng đối tượng.
 Kế thừa:
Kế thừa là việc tạo ra một lớp từ một lớp đã biết. lớp mới được tạo ra thừa hưởng
tất cả các thuộc tính và phương thức của lớp cũ
Khi muốn viết lại một phương thức đã có sẵn trong lớp cha ta phải nạp chồng
phương thức đó (thực ra là viết một phương thức mới có cùng tên, kiểu giá trị trả về
và tham số với phương thức đã có ở lớp
cha)


NHĐT Java-Nguyễn Thịnh Chiến-wWw.EbookSo1.Com
các dữ liệu có khai bai báo là protect, public , final thì lớp con có thể thừa
kế

- Đa hình
Đa hình là việc gọi một trong nhiều phương thức có cùng tên và nằm
trong cùng một lớp. Java sẽ dựa và kiểu trả về và tham số truyền vào để
gọi phương thức cho phù hợp
● Anh chị hãy giải thích khái niệm bao bọc và che dấu thơng tin
trong lập trình hướng đối tượng.

● Hãy nêu các khái niệm đối tượng, lớp các đối tượng trong lập trình
hướng đối tượng.
● Hãy nêu cấu trúc một tệp chương trình trong ngơn ngữ lập trình
hướng đối tượng java.

● Anh(chị hãy nêu) cấu trúc, mục đích ý nghĩa try-catch-finally
trong java và giải thích nguyên lý hoạt động của cấu trúc này.
● Hãy nêu các loại chương trình có thể phát triển trong java
● Hãy nêu các quy tắc chuyển đổi kiểu và ngữ cảnh phải sử dụng quy
tắc chuyển đổi kiểu trong ngôn ngữ java .
● Hãy nêu khái niệm nạp chồng trong java. Lấy ví dụ minh họa
● Hãy nêu khái niệm viết đè trong java. Lấy ví dụ minh họa
● Hãy phân biệt hai khái niệm nạp chồng và viết đè trong java. Lấy
ví dụ minh họa
● Định nghĩa ngoại lệ trong lập trình và cơ chế bắt và sử lý ngoại lệ
trong ngôn ngữ java.
● Hãy nêu cấu trúc phân cấp xử lý ngoại lệ trong java
● Hãy nêu cách sử dụng hai mệnh để throw và throws trong ngôn
ngữ java.
Hãy nêu cấu trúc một tệp chương trình trong ngơn ngữ lập trình java.
Anh(chị) hãy nêu mục đích, ý nghĩa của cấu trúc try-catch-finally
trong java và giải thích nguyên lý hoạt động của cấu trúc này.
Hãy nêu các loại chương trình có thể phát triển với ngơn ngữ java.
Hãy nêu các quy tắc chuyển đổi kiểu và ngữ cảnh phải sử dụng quy
tắc chuyển đổi kiểu trong ngôn ngữ java .
Hãy nêu khái niệm nạp chồng trong java. Lấy ví dụ minh họa
Hãy nêu khái niệm viết đè trong java. Lấy ví dụ minh họa


NHĐT Java-Nguyễn Thịnh Chiến-wWw.EbookSo1.Com
Hãy phân biệt hai khái niệm nạp chồng và viết đè trong java. Lấy ví
dụ minh họa
Trình bày cơ chế truyền tham số trong ngôn ngữ java.
Định nghĩa ngoại lệ trong lập trình và cơ chế xử lý ngoại lệ trong ngôn
ngữ java.

Hãy nêu cách sử dụng hai mệnh để throw và throws trong ngôn ngữ
java.
Hãy xác định phạm vi truy nhập của các thành phần private, public
trong lớp các đối tượng đối tượng.
Hãy xác định phạm vi truy nhập của các thành phần mặc định, public
trong lớp các đối tượng đối tượng.
Hãy xác định phạm vi truy nhập của các thành phần protected, public
trong lớp các đối tượng đối tượng.
Hãy nêu ý nghĩa của việc quy định phạm vi truy nhập của các thành
phần của lớp trong java.
Hãy nêu cách sử dụng từ khóa this và super trong java.
Nêu ý nghĩa của từ khóa final được sử dụng để khai báo với các thành
phần dữ liệu và phương thức(hàm) trong định nghĩa lớp.
Nêu khái niệm giao diện (interface) trong java.
Phân biệt khái niệm giao diện (interface) và khái niệm lớp trìu tượng
(abstract class) trong java.
Nêu cách khai báo gói, cách sử dụng gói trong java. Cho ví dụ minh
họa.
Ý nghĩa của tốn tử khởi tạo là gì? Có những loại tốn tử khởi tạo
nào? Lấy ví dụ minh họa.
Hãy nêu cú pháp định nghĩa hàm(phương thức) và các phương pháp
thực hiện các lời gọi hàm trong java.

Câu 2: dạng cho đoạn mã hãy sửa các lỗi hoặc cho biết kết quả in ra màn
hình
Câu 1 Cho đoạn chương trình sau? Hãy sửa các lỗi (nếu có) để chương
trình chạy được. Khi chạy chương trình cho ra kết quả như thế nào? Tại
sao?
class Rock {
Rock() { System.out.println("Creating Rock"); }

}
public class Simple {
public static Main(String[] args) {
for( i = 0; i < 10; i+2)
{
if (i % 2 != 0) continue;
new rock(); }
}
}


NHĐT Java-Nguyễn Thịnh Chiến-wWw.EbookSo1.Com
Câu 2: Cho đoạn chương trình sau? Hãy sửa các lỗi (nếu có) để chương
trình chạy được. Khi chạy chương trình cho ra kết quả như thế nào? Tại
sao?
Static class Tree { int height;
Tree() {
System.out.println ("Planting a seedling");
height = 0; }
Tree(int i) { System.out.println("create tree with height = ” +i+ );
height = i; }
void info() { System.out.println("Tree is " + height
+ " feet tall"); }
void info(String s) { System.out.println (s + "Tree is " + height + " feet
tall"); }
}
public class Overloading {
public void main(String[] args) {
for(i = 0; i < 5; i++) {
if ( i>2) break;

Tree t = new Tree(i);
t.info();
t.info("overloaded method"); }
new Tree(); }
}
Câu 3 Dạng bài tập quản lý (chú ý mối quan hệ giữa các đối tượng là mối
quan hệ kế thừa và kết tập(lớp này là dữ liệu tp của lớp khác) )
Không giới hạn nội dung đề cương bài tập(các đề cương bài tập dùng để
tham khảo)
Câu 1
Hãy xây dựng lớp DaGiac gồm có:
Các thuộc tính + Số cạnh của đa giác
+ Mảng các số thực chứa kích thước các cạnh của đa giác
Các phương thức:
+ Nhập vào giá trị cho các cạnh của đa giác
+ Tính chu vi của đa giác
+ Hiển thị giá trị các cạnh của đa giác.
Xây dựng một ứng dụng Java để nhập vào một dãy gồm m tam giác và:
+ Hiển thị thông tin về tam giác có chu vi lớn nhất.
+ Hiển thị thơng tin về tam giác có diện tích nhỏ nhất.
Câu 2
Mỗi một điểm trong mặt phẳng được xác đinh duy nhất bởi hai giá trị
nguyên là hoành độ và tung độ.
Hãy xây dựng lớp Diem để biểu diễn các đối tượng điểm trong mặt phẳng
và xây dựng phương thức sau:
+ Toán tử tạo lập
+ Phương thức in một đối tượng Diem


NHĐT Java-Nguyễn Thịnh Chiến-wWw.EbookSo1.Com

+ Tính khoảng cách giữa hai điểm ( )
Mỗi tam giác trong mặt phẳng được xác định bởi 3 điểm. Hãy xây dựng
lớp TamGiac với 3 thuộc tính riêng là 3 đối tượng thuộc lớp Diem và các
phương thức:
+ Xây dựng các toán tử tạo lập: TamGiac();
TamGiac(Diem d1, Diem d2, Diem d3);
+ Tính diện tích tam giác
+ Tính chu vi của tam giác
Câu 3
Hãy xây dựng lớp Diem để biểu diễn các đối tượng điểm trong mặt phẳng
và xây dựng phương thức sau:
+ Toán tử tạo lập
+ Phương thức in một đối tượng thuộc lớp Diem
+ Tính khoảng cách giữa hai điểm ()
Xây dựng lớp HinhTron chứa các đối tượng là các hình trịn với 2 thuộc
tính là 1 đối tượng thuộc lớp Diem để xác định tâm của hình trịn, một giá
trị ngun để xác định bán kinh của hình trịn. Cài đặt các phương thức:
+ Các toán tử tạo lập: HinhTron(), HinhTron(Diem d, int bk)
+ Tính chu vi, diện tich hình trịn (; )
Câu 4
a.Thơng tin về mỗi cá nhân bao gồm : Họ tên, giới tính, tuổi. Hãy xây
dựng lớp Nguoi chứa các đối tượng là các cá nhân và xây dựng các
phương thức:
+ Các toán tử tạo lập: Nguoi(); Nguoi(String, boolean, int);
+ Phương thức nhap() để nhập thông tin cho một cá nhân
+ Phương thức in() để in thông tin về một cá nhân
Hãy xây dựng lớp CoQuan chứa thông tin về các cá nhân trong một đơn vị
được dẫn xuất (kế thừa) từ lớp Nguoi và có thêm các thành phần:
+ Thuộc tính kiểu String xác định đơn vị cơng tác (bộ mơn, phịng); thuộc
tính kiểu double xác định hệ số lương.

+ Viết đè phương thức in() ở lớp Nguoi để in thông tin về một cá nhân
trong CoQuan
+ Cài đặt phương thức tinhLuong(CoQuan) để tính lương cho mỗi cá nhân
trong cơ quan theo công thức:
Lương =hệ số lương x 450000
Câu 5
Thông tin về mỗi xe máy gồm: Số máy, số khung, giá thành, hãng sản
xuất.
Xây dựng lớp XeMay có các phương thức sau:
+ Các tốn tử tạo lập
+ Nhập vào thơng tin của xe máy hiện thời
+ Hiển thị thông tin của một xe máy hiện thời.
Xây dựng lớp QLXeMay cài đặt các phương thức thực hiện các công việc
sau:
+ Nhập vào thông tin cho một danh sách gồm n xe máy.


NHĐT Java-Nguyễn Thịnh Chiến-wWw.EbookSo1.Com
+ iển thị thông tin về các xe máy có hãng sản xuất là “YAMAHA”
+ Sắp xếp các xe máy ở trên theo thứ tự giảm dần của giá thành
Câu 6
Thông tin về mỗi khách hàng gồm: Mã số, họ tên, tuổi, địa chỉ, sổ điện
thoại.
Xây dựng lớp KhachHang có:
+ Các tốn tử tạo lập
+ Phương thức nhập thông tin cho khách hàng hiện thời
+ Phương thức hiển thị thông tin của khách hàng hiện thời
Xây dựng lớp QLKhachHang cài đặt các phương thức thực hiện các công
việc sau:
+ Nhập vào thông tin cho một danh sách gồm n khách hàng (2 ≤ m ≤ 100)

+ Sắp xếp danh sách khách hàng theo thứ tự tăng dần của tuổi.
+ Hiển thị thông tin về những khách hàng có tuổi nhỏ nhất.
Câu 7
Các thí sinh dự thi đại học bao gồm các thí sinh thi khối A, thí sinh thi
khối B, thí sinh thi khối C
+ Các thí sinh cần quản lý các thuộc tính: Số báo danh, họ tên, địa chỉ, ưu
tiên.
+ Thí sinh thi khối A thi các mơn: Tốn, lý, hố
+ Thí sinh thi khối B thi các mơn: Tốn, Hố, Sinh
+ Thí sinh thi khối C thi các môn: văn, Sử, Địa
Xây dựng các lớp để quản lý các thí sinh sao cho sử dụng lại được nhiều
nhất.
Xây dựng lớp TuyenSinh cài đặt các phương thức thực hiện các nhiệm vụ
sau:
+ Nhập thông tin về một danh sách các thí sinh dự thi
+ Hiển thị thơng tin của các thí sinh thi khối A
+ Nhập vào số báo danh của một thí sinh, hãy cho biết thí sinh đó thi khối
gì và hiển thị thơng tin của thí sinh đó.
Câu 8
Để quản lý các hộ dân trong một khu phố, người ta quản lý các thơng tin
như sau:
Với mỗi hộ dân, có các thuộc tính:
+ Số thành viên trong hộ ( số người)
+ Số nhà của hộ dân đó ( Số nhà được gắn cho mỗi hộ dân)
+ Thông tin về mỗi cá nhân trong hộ gia đình.
Với mỗi cá nhân, người ta quản lý các thông tin như: họ và tên, tuổi, năm
sinh, nghề nghiệp.
Hãy xây dựng các lớp: NhanSu để quản lý thông tin về mỗi cá nhân; lớp
HoDan để quản lý thơng tin về các hộ gia đình. Viết các phương thức để
nhập, hiển thị thông tin cho mỗi cá nhân.

Cài đặt chương trình thực hiện các cơng việc sau:
+ Nhập vào một dãy gồm n hộ dân (n - nhập từ bàn phím).


NHĐT Java-Nguyễn Thịnh Chiến-wWw.EbookSo1.Com
+ Hiển thị ra màn hình thơng tin về các hộ trong khu phố.
Thông tin về mỗi nhân viên gồm: Mã số, họ tên, tuổi, hệ số lương, lương.
Xây dựng lớp NhanVien có:
+ Các tốn tử tạo lập
+ Phương thức nhập thông tin cho nhân viên hiện thời.
+ Phương thức tính lương cho nhân viên theo cơng thức sau:
Lương = hệ số lương * 450000
+ Phương thức hiển thị thông tin của nhân viên hiện thời
Xây dựng lớp QLNhanVien cài đặt các phương thức thực hiện các công
việc sau:
+ Nhập vào thông tin cho một danh sách gồm n nhân viên
+ Sắp xếp danh sách nhân viên theo thứ tự giảm dần của tổng lương.
+ Cho biết trong danh sách trên có bao nhiêu người có: Tuổi ≤ 25.
Câu 9
Thông tin về mỗi cá nhân bao gồm : Họ tên, giới tính, tuổi. Hãy xây dựng
lớp Nguoi mô tả các đối tượng của các cá nhân và xây dựng các phương
thức:
+ Các toán tử tạo lập: Nguoi(); Nguoi(String ht, boolean gt, int t);
+ Phương thức nhapThongTin() để nhập thông tin cho một cá nhân
+ Phương thức inThongTin() để in thông tin về một cá nhân
Hãy xây dựng lớp NhanSu chứa thông tin về các cá nhân trong một đơn vị
được dẫn xuất (kế thừa) từ lớp Nguoi và có thêm các thành phần:
+ Thuộc tính kiểu String xác định đơn vị cơng tác (bộ mơn, phịng); thuộc
tính kiểu double xác định hệ số lương.
+ Viết đè phương thức nhapThongTin() , inThongTin () ở lớp Nguoi để

nhập, in thông tin về một nhân sự
+ Cài đặt phương thức double tinhLuong() để tính lương cho mỗi cá nhân
trong cơ quan theo công thức:
Lương =hệ số lương x 830000



×