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...
Trang 1Đâ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 http://ebookso1.com
=======================================================
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 nguyên đó 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)
Trang 2cá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
Trang 3Hã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 toán tử khởi tạo là gì? Có những loại toá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(); } }
}
Trang 4Câ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
Trang 5+ 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ị nguyên để 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 toá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
Trang 6+ 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 toá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: Toán, lý, hoá
+ Thí sinh thi khối B thi các môn: Toán, Hoá, 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)
Trang 7+ 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 toá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