OOP cơ bản (Phần 2) – OOP trong Java

Related Articles

30 tháng 01, 2018 – 10028 lượt xemBài viết được dịch từ : ntu.edu.sg

Class & Instances

Trong Java, một class là một định nghĩa của những đối tượng người dùng cùng loại. Nói cách khác, một class là một bản thiết kế, bản mẫu, hoặc nguyên mẫu để định nghĩa và diễn đạt những thuộc tính tĩnh ( static attributes ) và những hành vi động ( dynamic behavior ) chung của tổng thể những đối tượng người dùng cùng loại .

Một instance là một trường hợp cụ thể của một class. Tất cả các instance của một lớp có các thuộc tính tương tự như đã được mô tả trong class. Ví dụ: bạn có thể định nghĩa một class ” Student ” và tạo ba instance của ” Student ” cho ” Peter “, ” Paul ” và ” Pauline “.

Thuật ngữ ” object ( đối tượng người dùng ) ” thường dùng để chỉ instance. Nhưng nó cũng hoàn toàn có thể được dùng để chỉ một class .

Một Class giống như một chiếc hộp 3 ngăn đóng gói dữ liệu và các hoạt động

A class is a 3-compartment box

Một lớp học hoàn toàn có thể được tưởng tượng như cái một hộp 3 ngăn, gồm :

  1. Tên ( Name ) ( hoặc nhận dạng ) : xác lập class .
  2. Các biến ( Variables ) ( hoặc thuộc tính, trạng thái, trường ) : chứa những thuộc tính tĩnh ( static attributes ) của class .
  3. Các phương pháp ( Methods ) ( hoặc những hành vi, tính năng, hoạt động giải trí ) : chứa những hành vi động ( dynamic behaviors ) của class .

Nói cách khác, một class gồm có những thuộc tính tĩnh ( tài liệu ) và những hành vi động ( những thao tác trên tài liệu ) trong một hộp .Hình dưới đây là một số ít ví dụ về class :

Example of classes

Hình dưới đây là 2 instance của class Student, ” paul ” và ” peter ” .

Two instances - paul and peter - of the class Student

Sơ đồ ngôn ngữ mô hình hoá thống nhất (UML – Unified Modeling Language) Class và Instance: Các sơ đồ class ở trên được vẽ theo các ký hiệu UML. Một class được biểu diễn như là một chiếc hộp 3 ngăn, chứa tên (name), các biến (variables) và phương thức (methods) tương ứng. Tên class được in đậm và căn giữa. Một instance cũng được biểu diễn như một chiếc hộp 3 ngăn, với tên instance như sau instanceName : Classname và gạch dưới.

Tóm tắt

  1. Một class là một thực thể ứng dụng được định nghĩa bởi lập trình viên, có tính trừu tượng, độc lập, hoàn toàn có thể tái sử dụng bắt chước những thứ trong thực tiễn .
  2. Một class là một chiếc hộp 3 ngăn chứa tên ( name ), những biến ( variables ) và những phương pháp ( methods ) .
  3. Một class đóng gói những cấu trúc tài liệu ( trong những biến ) và những thuật toán ( trong những phương pháp ). Các giá trị của những biến tạo thành trạng thái ( state ) của class. Các phương pháp tạo thành những hành vi ( behaviors ) của class .
  4. Một instance là một trường hợp cụ thế của class .

Định nghĩa Class trong Java

Trong Java, tất cả chúng ta sử dụng từ khoá class để định nghĩa một class. Ví dụ :

public class Circle { // class name double radius; // variables String color; double getRadius() { ...... } // methods double getArea() { ...... }
}
public class SoccerPlayer { // class name int number; // variables String name; int x, y; void run() { ...... } // methods void kickBall() { ...... }
}

Cú pháp để định nghĩa class trong Java là :

[AccessControlModifier] class ClassName { // Class body contains members (variables and methods) ......
}

Chúng ta sẽ tìm hiểu và khám phá về điều khiển và tinh chỉnh truy vấn ( access control modifier ), ví dụ điển hình như public và private, sau .

Quy ước đặt tên Class (Class Naming Convention): Tên class nên là một danh từ hoặc một cụm danh từ. Tất cả các từ sẽ viết hoa chữ cái đầu tiên (camel-case). Sử dụng danh từ số ít cho tên class. Chọn tên class có ý nghĩa và tự mô tả. Ví dụ, SoccerPlayer, HttpProxyServer, FileInputStream, PrintStream và SocketFactory .

Tạo các Instance của một Class

Để tạo một instance của một class, bạn phải :

  1. Khai báo tên instance của một lớp cụ thể.
  2. Khởi tạo instance (tức là phân bổ bộ nhớ cho instance và khởi tạo instance) sử dụng toán tử “new”.

Ví dụ : giả sử rằng tất cả chúng ta có một lớp gọi là Circle, tất cả chúng ta hoàn toàn có thể tạo những instance của Circle như sau :

// Declare 3 instances of the class Circle, c1, c2, and c3
Circle c1, c2, c3; // They hold a special value called null
// Construct the instances via new operator
c1 = new Circle();
c2 = new Circle(2.0);
c3 = new Circle(3.0, "red");
// You can Declare and Construct in the same statement
Circle c4 = new Circle();

Khi một instance được khai báo nhưng không được khởi tạo, nó giữ một giá trị đặc biệt quan trọng gọi là null .

Toán tử (.)

Các biến và các phương thức thuộc một class được gọi là các biến thành viên và các phương thức thành viên. Để tham chiếu một biến hoặc phương thức thành viên, bạn phải:

  1. Xác định instance mà bạn chăm sóc, và sau đó ,
  2. Sử dụng toán tử (. ) để tham chiếu biến hoặc phương pháp thành viên mong ước .

Ví dụ, giả sử rằng tất cả chúng ta có một lớp gọi là Circle, với hai biến thành viên ( radius và color ) và hai phương pháp thành viên ( getRadius ( ) và getArea ( ) ). Chúng ta đã tạo ra ba instance của class Circle, đơn cử là c1, c2 và c3. Để gọi phương pháp getArea ( ), trước hết phải xác lập instance bạn chăm sóc, ở đây là c2, sau đó sử dụng toán tử (. ), theo mẫu c2. getArea ( ) .Ví dụ ,

// Suppose that the class Circle has variables radius and color,
// and methods getArea() and getRadius().
// Declare and construct instances c1 and c2 of the class Circle
Circle c1 = new Circle ();
Circle c2 = new Circle ();
// Invoke member methods for the instance c1 via dot operator
System.out.println(c1.getArea());
System.out.println(c1.getRadius());
// Reference member variables for instance c2 via dot operator
c2.radius = 5.0;
c2.color = "blue";

Gọi getArea ( ) mà không có tên instance là không có ý nghĩa, vì nửa đường kính là không xác lập ( hoàn toàn có thể có nhiều instance của Circle – mỗi instance sẽ có nửa đường kính khác nhau ). Thay vào đó, c1. getArea ( ) và c2. getArea ( ) hoàn toàn có thể tạo ra những tác dụng khác nhau .Nói chung, giả sử có một class được gọi là AClass với một biến thành viên là aVariable và một phương pháp thành viên là aMethod ( ). Một instance là anInstance được khởi tạo cho AClass. Bạn sử dụng anInstance. aVariable và anInstance. aMethod ( ) .

Các biến thành viên

Một biến thành viên có một tên ( hoặc định danh ), một kiểu tài liệu ( type ) và giữ một giá trị của kiểu tài liệu mà nó được khai báo .

Quy ước đặt tên biến: Tên biến nên là một danh từ hoặc một cụm danh từ. Từ đầu tiên viết thường và các từ còn lại viết hoa chữ cái đầu tiên (camel-case), ví dụ, fontSize, roomNumber, xMax, yMin và xTopLeft .

Cú pháp để định nghĩa biến trong Java là :

[AccessControlModifier] type variableName [= initialValue];
[AccessControlModifier] type variableName-1 [= initialValue-1] [, type variableName-2 [= initialValue-2]] ... ;

Ví dụ ,

private double radius;
public int length = 1, width = 1;

Các phương thức thành viên

Một phương pháp :

  1. nhận các tham số,
  2. thực hiện các thao tác được định nghĩa trong thân phương thức, và
  3. trả về một phần của kết quả (hoặc void).

Cú pháp khai báo phương pháp trong Java như sau :

[AccessControlModifier] returnType methodName ([parameterList]) { // method body or implementation ......
}

Ví dụ :

// Return the area of this Circle instance
public double getArea() { return radius * radius * Math.PI;
}

Quy ước đặt tên phương thức: Tên phương thức nên là một động từ, hoặc cụm động từ. Từ đầu tiên viết thường và các từ còn lại viết hoa chữ cái đầu tiên (camel-case). Ví dụ, getArea(), setRadius(), getParameterValues(), hasNext().

Tên biến vs tên phương thức vs tên class: Tên biến là danh từ, biểu thị một thuộc tính; trong khi tên phương thức là một động từ, biểu thị một hành động. Chúng có cùng một quy ước đặt tên (từ đầu tiên viết thường và các từ còn lại viết hoa chữ cái đầu tiên). Tuy nhiên, bạn có thể dễ dàng phân biệt chúng từ ngữ cảnh. Phương thức lấy các đối số trong dấu ngoặc đơn (có thể là không có đối số với dấu ngoặc đơn rỗng), còn các biến thì không có dấu ngoặc đơn. Trong bài viết này, các phương thức được biểu thị bằng một cặp ngoặc đơn, ví dụ, println(), getArea().

Mặt khác, tên class là một danh từ hoặc cụm danh từ với những từ viết hoa vần âm tiên phong .

Đặt tất cả cùng nhau: Một ví dụ về OOP

Class Definition

Một class Circle được định nghĩa như trong sơ đồ. Nó chứa hai biến thành viên private : radius ( kiểu double ) và color ( kiểu String ) ; và ba phương pháp thành viên public : getRadius ( ), getColor ( ) và getArea ( ) .Ba instance của Circle là c1, c2, và c3, sẽ được khởi tạo với những tài liệu tương ứng của chúng, như trong sơ đồ phía trên .Các source code file Circle. java như sau :

/* * The Circle class models a circle with a radius and color. */
public class Circle { // Save as "Circle.java" // Private instance variables private double radius; private String color; // Constructors (overloaded) public Circle() { // 1st Constructor radius = 1.0; color = "red"; } public Circle(double r) { // 2nd Constructor radius = r; color = "red"; } public Circle(double r, String c) { // 3rd Constructor radius = r; color = c; } // Public methods public double getRadius() { return radius; } public String getColor() { return color; } public double getArea() { return radius * radius * Math.PI; }
}

Biên dịch ” Circle. java ” thành ” Circle. class ” .Lưu ý rằng class Circle không có phương pháp main ( ). Vì thế, nó không phải là một chương trình độc lập và không hề tự chạy. Điều đó có nghĩa là Class Circle là một khối – được sử dụng trong những chương trình khác .

TestCircle.java

Bây giờ tất cả chúng ta sẽ viết một Class khác gọi là TestCircle, sử dụng class Circle. Class TestCircle có một phương pháp main ( ) và hoàn toàn có thể thực thi .

/* * A Test Driver for the "Circle" class */
public class TestCircle { // Save as "TestCircle.java" public static void main(String[] args) { // Program entry point // Declare and Construct an instance of the Circle class called c1 Circle c1 = new Circle(2.0, "blue"); // Use 3rd constructor System.out.println("The radius is: " + c1.getRadius()); // use dot operator to invoke member methods System.out.println("The color is: " + c1.getColor()); System.out.printf("The area is: %.2f%n", c1.getArea()); // Declare and Construct another instance of the Circle class called c2 Circle c2 = new Circle(2.0); // Use 2nd constructor System.out.println("The radius is: " + c2.getRadius()); System.out.println("The color is: " + c2.getColor()); System.out.printf("The area is: %.2f%n", c2.getArea()); // Declare and Construct yet another instance of the Circle class called c3 Circle c3 = new Circle(); // Use 1st constructor System.out.println("The radius is: " + c3.getRadius()); System.out.println("The color is: " + c3.getColor()); System.out.printf("The area is: %.2f%n", c3.getArea()); }
}

Biên dịch TestCircle. java thành TestCircle. class .Chạy TestCircle và nghiên cứu và điều tra hiệu quả :

The radius is: 2.0
The color is: blue
The area is: 12.57
The radius is: 2.0
The color is: red
The area is: 12.57
The radius is: 1.0
The color is: red
The area is: 3.14

More on this topic

Comments

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Advertismentspot_img

Popular stories