1. Trang chủ
  2. » Tất cả

Kiến thức Java phỏng vấn Fsoft chắc chắn pass

14 7 0

Đ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

ÔN JAVALẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 0 JAVA CÓ PHẢI NGÔN NGỮ THUẦN HƯỚNG ĐỐI TƯỢNG KHÔNG. Bất cứ một ngôn ngữ lập trình nào nếu muốn được xem là một ngôn ngữ lập trình thuần hướng đối tượng nó phải thỏa mãn.

ÔN JAVA/LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG JAVA KHÔNG PHẢI NGƠN NGỮ THUẦN HƯỚNG ĐỐI TƯỢNG Bất ngơn ngữ lập trình muốn xem ngơn ngữ lập trình thuần hướng đối tượng phải thỏa mãn điều kiện sau: Nó phải hỗ trợ đặc điểm phương pháp lập trình hướng đối tượng là: o Tính đóng gói liệu (Encapsulation) o Tính kế thừa (Inheritance) o Tính trừu tượng (Abstraction) o Tính đa hình (Polymorphism) Những kiểu liệu định nghĩa sẵn như int, string, float, phải dạng đối tượng Những kiểu liệu người dùng định nghĩa phải dạng đối tượng Những toán tử thực thi đối tượng phải dạng các phương thức Vậy ngơn ngữ lập trình Java vi phạm hai điều kiện (2) và (4) Vi phạm điều kiện (2): Java hỗ trợ bạn khai báo kiểu liệu định nghĩa sẵn dạng int, byte, long, v.v mà lập trình hướng đối tượng kiểu liệu phải đóng gói lại thành đối tượng như Integer, String, v.v, Java hỗ trợ đóng gói kiểu liệu định nghĩa sẵn lớp ngồi, thực chất dạng kiểu liệu Vi phạm điều kiện (4): Java sử dụng tốn tử để thực phép tính hai đối tượng như String s = "123" + "ABC", điều vi phạm nguyên tắc thực thi đối tượng phải dạng phương thức phương pháp lập trình hướng đối tượng LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI JAVA 1.0 Lập trình HĐT gì? Lập trình HĐT phương pháp lập trình dựa khái niệm lớp đối tượng OOP tập trung vào đối tượng chức logic chương trình Đối tượng OOP bao gồm thành phần chính:  Thuộc tính (Attribute): thơng tin, đặc điểm đối tượng Biểu diện trạng thái (state) đối tượng  Phương thức (Method): hành vi mà đối tượng thực Là chức định nghĩa bên lớp mô tả hành vi đối tượng Fields với Properties khác điểm gì: Fields Properties đại diện cho liệu class lập trình hướng đối tượng, chúng có số điểm khác sau: Fields biến thông thường, Properties phương thức đặc biệt sử dụng để truy cập thay đổi giá trị biến class Fields truy cập trực tiếp thông qua tên biến, Properties truy cập thông qua phương thức getter setter Khi sử dụng Properties, kiểm sốt cách giá trị liệu truy cập thay đổi Ví dụ, ta kiểm tra tính hợp lệ giá trị trước cho phép giá trị đặt Khi sử dụng Properties, thêm logic bổ sung, ví dụ tính tốn kiểm tra liệu, phương thức getter setter Properties thường đặt tên theo quy tắc PascalCase, Fields thường đặt tên theo quy tắc camelCase Khi sử dụng IDE để tạo class, Properties thường tạo tự động để tránh sử dụng biến cơng khai q nhiều Tóm lại, Fields Properties đại diện cho liệu class, Properties cho phép ta kiểm soát bổ sung thêm logic vào trình truy cập thay đổi liệu Phân biệt lớp đối tượng: - Lớp thiết kế khuôn mẫu để tạo đối tượng cụ thể Những đối tượng có đặc tính tương tự tập hợp lại thành lớp Đối tượng chiếm nhớ, lớp khơng - Đối tượng tạo từ lớp, lớp có nhiều đối tượng Ví dụ Chó lớp, cịn Chó Phú Quốc, chó Husky đối tượng Lợi ích lập trình HĐT: - Tái sử dụng code - Code dễ bảo trì (sửa đổi) - Bảo mật (do đóng gói) - Dễ mở rộng dự án 1.1 Tính đóng gói (Encapsulation) Đóng gói chế gói liệu (attribute) hoạt động (method) thực liệu lại với thành thể thống (class) Các thuộc tính (hay biến) class bị ẩn khỏi lớp khác, truy cập thơng qua phương thức lớp Để đạt đóng gói java, ta cần: - Khai báo thuộc tính class private - Cung cấp phương thức public setter getter cho việc sửa đổi xem giá trị thuộc tính Lợi ích đóng gói: - Giấu thơng tin bên đối tượng để bên ngồi khơng thể nhìn thấy Để ngăn ngừa việc gán giá trị không hợp lệ vào liệu đối tượng Ví dụ đối tượng Student có thuộc tính gpa Thuộc tính cho phép giá trị từ – Nếu gpa truy cập trực tiếp, gán giá trị -4 chẳng hạn Do người ta đặt thuộc tính gpa private cung cấp public method sau để gán giá trị cho gpa public void setGpa(double gpa){ if(gpa >=0 && gpa dẫn đến kết sai Trường hợp để NhanVien lớp abstract phương thức getLoaiNhanVien() tinhLuong() phương thức abstract lớp bắt buộc phải override lại phương thức khơng trình biên dịch báo lỗi Phân biệt abstract class Interface Abstract class Interface 1) Abstract class có phương thức abstract (khơng có thân hàm) phương thức non-abstract (có thân hàm) Interface có phương thức abstract Từ java 8, có thêm các phương thức default static 2) Abstract class khơng hỗ trợ đa kế thừa Interface có hỗ trợ đa kế thừa 3) Abstract class có biến final, non-final, static and non-static Interface có biến static final (hằng số) 4) Abstract class có thể cung cấp nội dung cài đặt Interface không thể cung cấp nội dung cho phương thức interface cài đặt cho phương thức abstract class Abstract class có constructors Interface khơng có constructor 5) Từ khóa abstract được sử dụng để khai báo abstract class Từ khóa interface được sử dụng để khai báo interface 6) Ví dụ: public abstract class Shape { public abstract void draw(); } Ví dụ: public interface Drawable { void draw(); } Đơn giản để hiểu, abstract class có trừu tượng phần (0 tới 100%), cịn interface có trừu tường toàn phần (100%) 1.5 Lớp đối tượng 1.6 Mối quan hệ đối tượng //cái có mục đích -> hiểu mục đích chúng JAVA CƠ BẢN 2.1 Ngôn ngữ Java - Java ngơn ngữ lập trình hướng đối tượng (OOP) phát triển Sun Microsystem James Gosling khởi xướng phát hành vào năm 1995 - Tất chương trình muốn thực thi phải biên dịch mã máy Mã máy kiến trúc CPU khác nhau, ví dụ: mã máy CPU Intel, CPU Solarix, CPU macintosh,… khác Vì trước chương trình chạy windows muốn chạy HĐH khác chẳng hạn LINUX phải chỉnh sửa biên dịch lại Nhưng Java đời, nhờ vào máy ảo Java mà khó khăn khắc phục Một chương trình viết java java compiler biên dịch thành mã bytecode (chính file class) Sau máy ảo java (JVM) chuyển bytecode thành mã máy tương ứng với hệ điều hành Nhờ chương trình java cần biên dịch lần chạy nhiều tảng khác nhau, cần máy tính có cài máy ảo java Về chất JVM chạy tảng chương trình java chạy tảng Nói java đa tảng thực chất hỗ trợ JVM nhiều tảng - JVM: máy ảo java, chuyển bytecode thành mã máy - JDK: JDK (Java Development Kit- Bộ công cụ phát triển Java) công cụ để phát triển ứng dụng Java JDK = JRE + Compiler + Debuger + Javadocs + … Có gói JDK: + Java SE (Java Standard Editon) Cịn gọi Java Core, phiên chuẩn Java, dùng làm tảng cho phiên khác  Chứa API chung (như java.lang, java.util ) nhiều API đặc biệt khác  Bao gồm tất tính năng, đặc trưng ngôn ngữ Java biến, kiểu liệu nguyên thủy, Arrays, Streams, Strings, Java Database Connectivity (JDBC)…  Tính tiếng Java là JVM cũng xây dựng cho phiên  Java SE sử dụng với mục đích để để tạo ứng dụng cho môi trường Desktop + Java ME (Java Micro Edition)  Đây phiên sử dụng cho việc tạo ứng dụng chạy hệ thống nhúng thiết bị mobile thiết bị nhỏ  Các thiết bị sử dụng Java ME thường có hạn chế giới hạn khả xử lý, giới hạn nguồn điện (pin), hình hiển thị nhỏ…  Java ME cịn hỗ trợ việc sử dụng công nghệ nén web, giúp giảm dụng lượng sử dụng (network usage) cải thiện khả truy cập internet giá rẻ  Java ME sử dụng nhiều thư viện API Java SE nhiều thư viện, API riêng + Java EE (Java Enterprise Edition)  Đây phiên Enterprise Java, sử dụng để phát triển  ứng dụng web  Java EE chứa Enterprise APIs JMS, EJB, JSPs/Servlets, JNDI  Java EE sử dụng nhiều thành phần Java SE có thêm nhiều tính riêng Servlet, JavaBeans…  Java EE sử dụng HTML, CSS, JavaScript… để tạo trang web web service  Nhiều ngôn ngữ khác dùng để phát triển ứng dụng web giống Java EE (.Net, PHP ) Java EE sử dụng nhiều tính hoạt, khả bảo mật, khả chuyển… Khi bạn tải Java EE Java ME, có ln Java SE  - JRE: JRE ( Java Runtime Environment) gói phần mềm cung cấp thư viện lớp Java, với Máy ảo Java (JVM), thành phần khác để chạy ứng dụng viết ngơn ngữ lập trình Java JRE = JVM + Class libraries - Mối quan hệ JDK, JRE, JVM: 2.2 Generic Thuật ngữ “generics” hiểu tham số hóa kiểu liệu Việc tham số hóa kiểu liệu giúp cho lập trình viên dễ bắt lỗi kiểu liệu không hợp lệ, đồng thời giúp dễ dàng cho việc tạo sử dụng class, interface, method với nhiều kiểu liệu khác Ta thường thấy Generic ArrayList Ví dụ: ArrayList list = new ArrayList(); T: đại diện cho wrapper class kiểu liệu Trong ví dụ T String Ta tạo class, interface, method sử dụng generic để thao tác nhiều kiểu liệu khác - Tạo class với generic class Dictionary { private K key; private V value; public Dictionary(K key, V value) { this.key = key; this.value = value; } public K getKey() { return key; } public void setKey(K key) { this.key = key; } public V getValue() { return value; } public void setValue(V value) { this.value = value; } } Trong K, V viết tắt Key, Value đại diện cho class - Tạo interface với generic interface writer { void update(T obj); void delete(T obj); void write(T obj); } T: đại diện cho class - Tạo phương thức với generic public static E getFirstElement(ArrayList arr) { if (arr.isEmpty()) return null; E first = arr.get(0); return first; } E: đại diện cho phần tử collection, E class * Generic cịn thể qua dấu ? Dấu ? đại diện cho class 2.4 Collections Collections framework Java cung cấp cấu trúc liệu cho việc lưu trữ tổ chức liệu Gói java.util chứa tất interface lớp Collections framework 2.5 Wraper class Lớp Wrapper java cung cấp chế để chuyển đổi kiểu liệu nguyên thủy thành kiểu đối tượng từ đối tượng thành kiểu liệu nguyên thủy Từ J2SE 5.0, tính năng autoboxing và unboxing chuyển đổi kiểu liệu nguyên thủy thành kiểu đối tượng từ đối tượng thành kiểu liệu nguyên thủy cách tự động Sự chuyển đổi tự động kiểu liệu nguyên thủy thành kiểu đối tượng gọi autoboxing ngược lại gọi unboxing Ví dụ chuyển từ nguyên thủy sang Wrapper: public class WrapperExample1 {     public static void main(String args[]) {         // Đổi int thành Integer         int a = 20;         Integer i = Integer.valueOf(a);// đổi int thành Integer         Integer j = a;// autoboxing, tự động đổi int thành Integer nội //bộ trình biên dịch           System.out.println(a + " " + i + " " + j);     } } Ví dụ chuyển từ kiểu Wrapper class sang kiểu nguyên thủy: public class WrapperExample2 {     public static void main(String args[]) {         // đổi Integer thành int         Integer a = new Integer(3);         int i = a.intValue();// đổi Integer thành int         int j = a;// unboxing, tự động đổi Integer thành int nội //trình biên dịch           System.out.println(a + " " + i + " " + j);     } } Trong java, có lớp Wrapper chúng thiết kế gói java.lang Kiểu nguyên thủy Kiểu Wrapper boolean Boolean char Character byte Byte short Short int Integer long Long float Float double Double 2.6 Hằng số java (ý nghĩa từ khóa final) Hằng số giá trị bất biến, khơng thay đổi suốt chương trình Hằng số khởi tạo lần Nếu cố tình thay đổi giá trị số, trình biên dịch báo lỗi Tên java quy ước chữ viết hoa, cách dấu gạch ví dụ: YOUR_NAME Khai báo số java sử dụng từ khóa final, ví dụ: final float PI = 3.14f Từ khóa final java:     Biến final: bạn thay đổi giá trị biến final (nó số) Phương thức final: bạn ghi đè phương thức final Lớp final: bạn kế thừa lớp final Biến static final trống: Một biến final mà không khởi tạo thời điểm khai báo gọi biến final trống 2.7 Kiểu liệu java Có kiểu là: - Kiểu nguyên thủy: gồm int, float, double, char,… Biến (variables) kiểu nguyên thủy giữ giá trị liệu - Kiểu lớp (kiểu đối tượng): Ví dụ String hay lớp ta tự định nghĩa Biến kiểu lớp giữ địa nhớ liệu biến kiểu lớp gọi biến tham chiếu 2.8 Các biến kiểu static phương thức static (hiểu từ khóa static) Từ khóa static Java được sử dụng để quản lý nhớ, sử dụng nhớ hiệu quả, tiết kiệm nhớ Chúng ta áp dụng từ khóa static với biến, phương thức, khối, lớp lồng nhau(nested class) Từ khóa static thuộc lớp không thuộc instance(thể hiện) lớp 2.8.1 biến static - Biến static để biến (hay thuộc tính) biến chung Tất instance lớp có chung giá trị biến - Biến static truy cập qua tên class mà không cần tạo instance - Biến static giúp tiết kiệm nhớ, biến cấp nhớ lần Ví dụ lớp Student class Student{       int rollno;       String name;       String college="Bưu Chính Viễn Thơng";  } Nếu ta khơng đặt từ khóa static vào thuộc tính college giả sử trường có 1000 sinh viên, tạo instance Student ta lại phải cấp nhớ cho thuộc tính college (như phải cấp nhớ 1000 lần) 2.8.2 Phương thức static - Phương thức static thuộc lớp không thuộc đối tượng lớp, được gọi qua tên lớp mà không cần tạo đối tượng (instance) - Phương thức static sử dụng biến non-static, bắt buộc sử dụng biến static 2.8.3 Khối static  Khối static dùng để khởi tạo thay đổi giá trị biến static  Nó thực thi trước phương thức main thời gian tải lớp  Một class có nhiều static blocks Khối static có dạng static {      System.out.println("Khối static gọi"); } 2.8.4 Lớp static Một class được đặt static một nested class (tức nằm lớp khác). Một nested static class có thể truy cập mà khơng cần object của outer class (lớp bên ngoài) ... Debuger + Javadocs + … Có gói JDK: + Java SE (Java Standard Editon) Cịn gọi Java Core, phiên chuẩn Java, dùng làm tảng cho phiên khác  Chứa API chung (như? ?java. lang, java. util ) nhiều API đặc biệt... (.Net, PHP ) Java EE sử dụng nhiều tính hoạt, khả bảo mật, khả chuyển… Khi bạn tải Java EE Java ME, có ln Java SE  - JRE: JRE ( Java Runtime Environment) gói phần mềm cung cấp thư viện lớp Java, với... phương thức thực thi loại static mà phương thức thực thi xác định thời gian chạy (runtime) máy ảo JVM Loại gọi ghi đè phương thức (override) Các lớp override phương thức lớp cha (các phương thức

Ngày đăng: 28/03/2023, 16:22

Xem thêm:

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN

w