Giáo trình Java cơ bản: Phần 2

159 12 0
Giáo trình Java cơ bản: Phần 2

Đ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

Giáo trình Java cơ bản: Phần 2 nhằm giới thiệu đến bạn đọc những nội dung về hướng đối tượng trong Java, thiết kế giao diện người dùng, luồng và tập tin, lập trình cơ sở dữ liệu. Với các bạn đang học chuyên ngành công nghệ thông tin thì đây là tài liệu tham khảo hữu ích dành cho các bạn.

System.out.print("\n"); } } Chương 3: HƯỚNG ĐỐI TƯỢNG TRONG JAVA 3.1.Mở đầu Thơng qua chun đề lập trình hướng đối tượng (OOP) biết OOP tiếp cận mạnh mẽ, 47 hiệu để xây dựng nên chương trình ứng dụng máy tính Từ đời lập trình OOP chứng tỏ sức mạnh, vai trị đề án tin học Ch hương giúp bạn đọc tìm hiểu kiểu liệu dẫn xuất lớp (class) giao tiếp (interface), vấn đề lập trình hướng đối tượng java thơng qua việc tạo lập lớp, đối tượng tính chất chúng 3.2.Lớp (Class) 3.2.1.Khái niệm Chúng ta xem lớp khuôn mẫu (template) đối tượng (Object) Trong bao gồm liệu đối tượng (fields hay properties) phương thức(methods) tác động lên thành phần liệu gọi phương thức lớp Các đối tượng xây dựng lớp nên gọi thể lớp (class instance) 3.2.2.Khai báo/định nghĩa lớp class { ; ; constructor method_1 method_2 } class: từ khóa java ClassName: tên đặt cho lớp field_1, field_2: thuộc tính, biến, hay thành phần liệu lớp constructor: xây dựng, khởi tạo đối tượng lớp method_1, method_2: phương thức/hàm thể thao tác xử lý, tác động lên thành phần liệu lớp 48 3.2.3.Tạo đối tượng lớp ClassName objectName = new ClassName(); 3.2.4.Thuộc tính lớp Vùng liệu (fields) hay thuộc tính (properties) lớp khai báo bên lớp sau: class { // khai báo thuộc tính lớp field1; // … } Để xác định quyền truy xuất đối tượng khác vùng liệu lớp người ta thường dùng tiền tố sau: • public: truy xuất từ tất đối tượng khác • private: lớp truy xuất vùng private lớp khác • protected: vùng protected lớp cho phép thân lớp lớp dẫn xuất từ lớp truy cập đến Ví dụ: public class xemay { public public private protected String String float int nhasx; model; chiphisx; thoigiansx; // so luong so cua xe may: 3, so protected int so; // sobanhxe biến tĩnh có giá trị tất // thể tạo từ lớp xemay 49 public static int sobanhxe = 2; } Thuộc tính “nhasx”, “model”có thể truy cập đến từ tất đối tượng khác Thuộc tính “chiphisx” truy cập từ đối tượng có kiểu “xemay” Thuộc tính “thoigiansx”, so truy cập từ đối tượng có kiểu “xemay” đối tượng lớp dẫn xuất từ lớp “xemay” Lưu ý: Thông thường để an toàn cho vùng liệu đối tượng người ta tránh dùng tiền tố public, mà thường chọn tiền tố private để ngăn cản quyền truy cập đến vùng liệu lớp từ phương thức bên ngồi lớp 3.2.5.Hàm - Phương thức lớp (Method) Hàm hay phương thức (method) Java khối lệnh thực chức năng, hành vi xử lý lớp lên vùng liệu Khai báo phương thức: () { ; } Để xác định quyền truy xuất đối tượng khác phương thức lớp người ta thường dùng tiền tố sau: • public: phương thức truy cập từ bên ngồi lớp khai báo • protected: truy cập từ lớp khai báo lớp dẫn xuất từ • private: truy cập bên thân lớp khai báo 50 • static: phương thức lớp dùng chung cho tất thể lớp, có nghĩa phương thức thực kể khơng có đối tượng lớp chứa phương thức • final: phương thức có tiền tố khơng khai báo chồng lớp dẫn xuất • abstract: phương thức khơng cần cài đặt (khơng có phần source code), thực lớp dẫn xuất từ lớp • synchoronized: dùng để ngăn tác động đối tượng khác lên đối tượng xét đồng hóa Dùng lập trình miltithreads : kiểu void, kiểu sở hay lớp : đặt theo qui ước giống tên biến : rỗng Lưu ý: Thơng thường lớp phương thức nên khai báo dùng từ khóa public, khác với vùng liệu thường dùng tiền tố private mục đích an tồn Những biến nằm phương thức lớp biến cục (local) nên khởia tạo sau khai báo Ví dụ: public class xemay { public public private protected String String float int nhasx; model; chiphisx; thoigiansx; // so luong so cua xe may: 3, so protected int so; 51 // biến tĩnh có giá trị tất // thể tạo từ lớp xemay public static int sobanhxe = 2; public float tinhgiaban() { return 1.5 * chiphisx; } } 3.2.6.Khởi tạo đối tượng (Constructor) Contructor thật loại phương thức đặc biệt lớp Constructor dùng gọi tự động khởi tạo thể lớp, dùng để khởi gán giá trị măc định Các constructor khơng có giá trị trả về, có tham số khơng có tham số Constructor phải có tên với lớp gọi đến dùng từ khóa new Nếu lớp khơng có constructor java cung cấp cho lớp constructor mặc định (default constructor) Những thuộc tính, biến lớp khởi tạo giá trị mặc định (số: thường giá trị 0, kiểu luận lý giá trị false, kiểu đối tượng giá trị null, …) Lưu ý: thơng thường để an tồn, dễ kiểm sốt làm chủ mã nguồn chương trình nên khai báo constructor cho lớp Ví dụ: public class xemay { // … public xemay() 52 {} public xemay(String s_nhasx, String s_model, f_chiphisx, int i_thoigiansx, int i_so); { nhasx = s_nhasx; model = s_model; chiphisx = f_chiphisx; thoigiansx = i_thoigiansx; so = i_so; // // this.nhasx = s_nhasx; // this.model = s_model; // this.chiphisx = f_chiphisx; // this.thoigiansx = i_thoigiansx; // this.so = i_so; } } 3.2.7.Biến this Biến this biến ẩn tồn tất lớp ngông ngữ java Một class Java tồn biến this, biến this sử dụng chạy tham khảo đến thân lớp chứa Ví dụ: class A { int ; String ; // Contructor lớp A public A(int par_1, String par_2) { 53 this.field_1 = par_1; this.field_2 = par_2; } () { // … } () { this.method_1() // … } } 3.2.8.Khai báo chồng phương thức (overloading method) Việc khai báo lớp nhiều phương thức có tên khác tham số (khác kiểu liệu, khác số lượng tham số) gọi khai báo chồng phương thức (overloading method) Ví dụ: public class xemay { // khai báo fields … public float tinhgiaban() { return * chiphisx; } public float tinhgiaban(float huehong) { return (2 * chiphisx + huehong); } } 3.3.Đặc điểm hướng đối tượng java Hỗ trợ nguyên tắc lập trình hướng đối tượng, tất ngơn ngữ lập trình kể java có ba đặc 54 điểm chung: tính đóng gói (encapsulation), tính đa hình (polymorphism), tính kế thừa (inheritance) 3.3.1.Đóng gói (encapsulation) Cơ chế đóng gói lập trình hướng đối tượng giúp cho đối tượng dấu phần chi tiết cài đặt, phần liệu cục nó, cơng bố ngồi cần công bố để trao đổi với đối tượng khác Hay nói đối tượng thành tố hỗ trợ tính đóng gói Đơn vị đóng gói ngơn ngữ java class Một class định nghĩa hình thức đối tượng Một class định rõ thành phần liệu đoạn mã cài đặt thao tác xử lý đối tượng liệu Java dùng class để xây dựng đối tượng Những đối tượng thể (instances) class Một lớp bao gồm thành phần liệu thành phần xử lý Thành phần liệu lớp thường bao gồm biến thành viên biến thể lớp Thành phần xử lý thao tác thành phần liệu, thường java người gọi phương thức Phương thức thuật ngữ hướng đối tượng java, C/C++ người ta thường dùng thuật ngữ hàm 3.3.2.Tính đa hình (polymorphism): Tính đa hình cho phép cài đặt lớp dẫn xuất khác từ lớp nguồn Một đối tượng có nhiều kiểu khác gọi tính đa hình Ví dụ: class A_Object { // … void method_1() { // … 55 } } class B_Object extends A_Object { // … void method_1() { // … } } class C { public static void main(String[] args) { // Tạo mảng phần tử kiểu A A_Object arr_Object = new A_Object[2]; B_Object var_1 = new B_Object(); // Phần tử mảng arr_Object[0] tham // chiếu đến đối tượng kiểu B_Object dẫn xuất // từ A_Object arr_Object[0] = var_1; A_Object var_2; for (int i=0; i b) 9: f = i; a Dòng b Dòng c Dòng d Dòng 61 Chọn dòng phát sinh lỗi biên dịch 195 1: 2: 3: a b c d byte b = 2; byte b1 = 3; b = b * b1; Dòng Dòng Dòng Tất câu 62 Trong đoạn mã sau kiểu liệu biến result kiểu nào? : byte b = 11; : short s =13; : result = b * ++s; a byte, short, int, long, float, double b boolean, byte, short, char, int, long, float, double c byte, short, char, int, long, float, double d int, long, float, double 63 Cho đoạn chương trình sau: : class Cruncher{ 2: void crunch(int i){ 3: System.out.println(“int version”): 4: } 5: void crunch(String s){ 6: System.out.println(“String version”); 7: } 8: 9: public static void main(String[] args){ 10 : Cruncher crun = new Cruncher(); 11 : char ch = ‘p’; 12 : crun.crunch(ch); 13 : } 14 : } a Dịng khơng biên dịch phương thức trả kiểu void overridde 196 b Dịng 12 khơng biên dịch khơng có phiên phương thức crunch() nhận vào tham số kiểu char c Đoạn mã biên dịch phát sinh Exception dịng 12 d Chương trình chạy in kết quả: int version 64 Chọn phát biểu a Tham chiếu đối tượng chuyển đổi phép gán thực phép gọi phương thức b Tham chiếu đổi tượng ép kiểu phép gọi phương thức thực phép gán c Tham chiểu đối tượng chuyển đổi phép gọi phương thức phép gán tuân theo quy tắc khác d Tham chiếu đối tượng chuyển đổi phép gọi phương thức phép gán tuân theo quy tắc giống 65 Cho đoạn mã bên Hãy cho biết dịng khơng thể biên dịch : Object ob = new Object(); : String stringarr[] = new String[50]; : Float floater = new Float(3.14f); : ob = stringarr; : ob = stringarr[5]; : floater = ob; : ob = floater; a Dòng b Dòng a Dòng b Dòng 197 Animal Mammal Dog Cat (implements Washer) Racoon (implements Washer) Swamp Thing Hình sau áp dụng cho câu 66, 67, 68 66 Cho đoạn mã sau: :Dog rover, fido; :Animal anim; 3: :rover = new Dog(); :anim = rover; :fido = (Dog)anim; Hãy chọn phát biểu a Dịng khơng thể biên dịch b Dịng khơng thể biên dịch c Đoạn mã biên dịch thành công phát sinh Exception dòng d Đoạn mã biên dịch thành cơng thi hành 67 Cho đoạn mã sau: :Cat sunflower; :Washer wawa; :SwampThing pogo; 4: :sunflower = new Cat(); 198 :wawa = sunflower; :pogo = (SwampThing)wawa; Hãy chọn phát biểu đú a Dịng khơng thể biên dịch; cần có phép ép kiểu để chuyển từ kiểu Cat sang kiểu Washer b Dịng khơng thể biên dịch ép từ kiểu interface sang kiểu class c Đoạn mã dịch chạy phép ép kiểu dịng thừa bỏ di d Đoạn mã biên dịch thành công phát sinh Exceptiono dịng kiểu lớp đối tượng biến wawa lúc thi hành chuyển sang kiểu SwampThing 68 Cho đoạn mã sau :Racoon rocky; :SwampThing pogo; :Washer w; 4: :rocky = new Racooon(); :w = rocky; :pogo = w; a Dịng khơng biên dịch; cần phải có phép ép kiểu để chuyển từ kiểu Racoon sang kiểu Washer b Dịng khơng biên dịch; cần có phép ép kiểu để chuyển từ kiểu Washer sang kiểu SwampThing c Đoạn mã biên dịch phát sinh Exception dịng chuyển đổi kiểu thực thi từ interface sang class không phép d Đoạn mã biên dịch phát sinh Exception dịng kiểu lớp w thời điểm thực thi chuyển sang kiểu SwampThing 69 Cho đoạn mã sau: : for (int i = 0; i < 2; i++){ 2: for (int j = 0; j < 3; j++){ 199 3: 4: 5: 6: 7: 8: } if (i == j){ continue; } System.out.println(“i = “ + i + “j = “ + j); } Dòng số kết in ra? a i = j = b i = j = c i = j = d i = j = 70 Cho đoạn mã sau: : outer: for (int i = 0; i < 2; i++){ 2: for (int j =0; j < 3; j++){ 3: if (i == j){ 4: continue outer; 5: } 6: System.out.println(“i = “ + i + “j = “ + j); 7: } 8: } Dòng số kết in ra? a i = j = b i = j = c i = j = d i = j = 71 Chọn vòng lặp a : while (int i < 7){ 2: i++; 3: System.out.println(“i is “ + i); 4: } b 200 5: 6: 7: 8: c 1: 2: 3: 4: d 1: 2: 3: 4: 5: int i = 3; while (i){ System.out.println(“i is “ + i); } int j = 0; for(int k = 0; j + k != 10; j++, k++){ System.out.println(“j is “ + j + “ k is “ + k); } int j = 0; do{ System.out.println(“j is “ + j++); if (j == 3) { continue loop;} }while (j < 10); 72 Cho biết kết xuất đoạn mã sau : int x = 0, y = 4, z = 5; : if ( x > 2){ 3: if (y < 5){ 4: System.out.println(“message one”); 5: } 6: else{ 7: System.out.println(“message two”); 8: } 9: } 10 : else if (z > 5){ 11 : System.out.println(“message three”); 12 : } 13 : else{ 14 : System.out.println(“message four”); 15 : } a message one b message two c message three 201 d message four 73 Chọn phát biểu cho đoạn mã sau: : int j = 2; : switch (j){ 3: case 2: 4: System.out.println(“value is two”); 5: case + 1: 6: System.out.println(“value is three”); 7: break; 8: default: 9: System.out.println(“value is” + j); 10 : break; 11 : } a Đoạn mã không hợp lệ bỡi biểu thức dòng b Biến j cấu trúc switch() kiểu: byte, short, int long c Kết xuất chương trình dòng: value is two d Kết xuất chương trình dịng: value is two value is three 74 Cho biết kết sau dịch thực thi đoạn chương trình sau: import java.awt.*; public class Test extends Frame { Test() { setSize(300,300); Button b = new Button(“Apply”); add(b); } 10 public static void main(String args[]) { 11 Test f = new Test(); 12 f.setVisible(true); 202 13 } 14 } a) Có lỗi biên dịch dịng 11 constructor dịng khơng khai báo public b) Chương trình biên dịch thành cơng có ném exception thực thi câu lệnh dịng thứ c) Chương trình hiển thị frame trống d) Chương trình hiển thị nút nhấn (Button) sử dụng font chữ mặc định cho nhãn Button Button đủ lớn để bao quanh nhãn e) Chương trình hiển thị nút nhấn (Button) dùng font chữ mặc định cho nhãn nút Nút nhấn choán tất vùng hiển thị frame 75 Nếu frame dùng quản lý trình bày (layout manager) GridLayout không chứa panel hay container khác bên tất components đưa vào frame có kích thước (ngang, dọc)? a) Đúng b) Sai 76 Nếu frame dùng quản lý trình bày (layout manager) mặc định khơng chứa panel bên tất components bên frame kích thước (ngang, dọc) ? a) Đúng b) Sai 77 Với quản lý trình bày BorderLayout khơng thiết vùng phải có chứa components a) Đúng b) Sai 78 Bộ quản lý trình bày mặc định cho khung chứa kiểu Panel là: 203 a) b) c) d) FlowLayout BorderLayout GridLayout GridBagLayout 79 Một Container có quản lý trình bày GridBagLayout component có kích thước thêm vào khung chứa (container) này? a) Đúng b) Sai 80 Bạn tạo cửa sổ ứng dụng cách gọi: Frame f = new Frame(“Main Frame”); Nhưng bạn chạy chương trình Frame khơng hiển thị Dịng bên làm hiển thị Frame a) f.setSize(300, 200); b) f.setBounds(10, 10, 500, 400); c) f.setForeground(Color.white); d) f.setVisible(true); 81 Đối tượng bên chứa menubar (chọn câu đúng) a) Panel b) ScrollPane c) Frame d) Menu 82 Sau tạo frame câu lệnh Frame f = new Frame() tạo menu bar câu lệnh MenuBar mb = new MenuBar(), làm để gắn MenuBar tên mb vào f a) f.add(mb) b) f.setMenu(mb) c) f.addMenu(mb) d) f.setMenuBar(mb) 204 Phụ Lục B: Đáp án trắc nghiệm kiến thức 1.c; 2.b; 3.d; 4.c; 5.d; 6.d; 7.c; 8.a; 9.d; 10.a; 11.a; 12.c; 14.d; 15.a; 16.d; 17.a; 18.c; 19.a; 20.c; 21.a; 22.a; 23.a; 25.c; 26.a; 27.a; 28.d; 29.d; 30.c; 31.b; 32.a; 33.b; 34.d; 36.c; 37.d; 38.d; 39.c; 40.c; 41.c; 42.c; 43.d; 44.a; 45.d; 47.a; 48.b; 49.c; 50.b; 51.d; 52.b; 53.a; 54.d; 55.c; 56.d; 58.a; 59.c; 60.d; 61.c; 62.d; 63.d; 64.d; 65.c; 66.d; 67.d; 69.c; 70.d; 71.c; 72.d; 73.d; 74.e; 75.a; 76.b; 77.a; 78.a; 80.d; 81.c; 82.d 205 13.b; 24.a; 35.c; 46.d; 57.c; 68.b; 79.b; ... var_1; A_Object var _2; for (int i=0; i

Ngày đăng: 11/05/2021, 19:20

Tài liệu cùng người dùng

Tài liệu liên quan