Thứ Sáu, 30 tháng 11, 2018

Java - Đối tượng và Lớp học

Học lập trình Java là một ngôn ngữ hướng đối tượng. Là một ngôn ngữ có tính năng hướng đối tượng, Java hỗ trợ các khái niệm cơ bản sau:

Đa hình

Di sản

Đóng gói

Trừu tượng

Các lớp học

Các đối tượng

Ví dụ

phương pháp

Phân tích thư

Học lập trình Java
Trong chương này, chúng ta sẽ xem xét các khái niệm - Các lớp và các đối tượng.

Đối tượng - Đối tượng có các trạng thái và hành vi. Ví dụ: Chó có trạng thái - màu sắc, tên, giống cũng như hành vi - vẫy đuôi, sủa, ăn. Một đối tượng là một thể hiện của một lớp.

Lớp - Một lớp có thể được định nghĩa là một mẫu / kế hoạch chi tiết mô tả hành vi / trạng thái mà đối tượng của kiểu hỗ trợ của nó.

Các đối tượng trong Java

Bây giờ chúng ta hãy nhìn sâu vào các đối tượng là gì. Nếu chúng ta xem xét thế giới thực, chúng ta có thể tìm thấy nhiều vật thể xung quanh chúng ta, xe hơi, chó, con người, vv Tất cả những vật thể này đều có trạng thái và hành vi.

Nếu chúng ta xem xét một con chó, sau đó trạng thái của nó là - tên, giống, màu sắc, và hành vi là - sủa, vẫy đuôi, chạy.

Nếu bạn so sánh đối tượng phần mềm với một đối tượng trong thế giới thực, chúng có những đặc điểm rất giống nhau.

Các đối tượng phần mềm cũng có trạng thái và hành vi. Trạng thái của một đối tượng phần mềm được lưu trữ trong các trường và hành vi được hiển thị thông qua các phương thức.

Vì vậy, trong phát triển phần mềm, các phương thức hoạt động trên trạng thái bên trong của một đối tượng và truyền thông đối tượng đến đối tượng được thực hiện thông qua các phương thức.

Các lớp học trong Java

Học lập trình Java Một lớp là một kế hoạch chi tiết mà từ đó các đối tượng riêng lẻ được tạo ra.

Sau đây là một mẫu của một lớp.

Thí dụ
public class Dog {
   String breed;
   int age;
   String color;

   void barking() {
   }

   void hungry() {
   }

   void sleeping() {
   }
}
Một lớp có thể chứa bất kỳ loại biến nào sau đây.

Các biến cục bộ - Các biến được định nghĩa bên trong các phương thức, các hàm tạo hoặc các khối được gọi là các biến cục bộ. Biến sẽ được khai báo và khởi tạo trong phương thức và biến sẽ bị hủy khi phương thức đã hoàn thành.

Các biến cá thể - Các biến mẫu là các biến trong một lớp nhưng bên ngoài bất kỳ phương thức nào. Các biến này được khởi tạo khi lớp được khởi tạo. Các biến thể hiện có thể được truy cập từ bên trong bất kỳ phương thức, hàm tạo hoặc khối nào của lớp cụ thể đó.

Biến lớp - Biến lớp là các biến được khai báo trong một lớp, bên ngoài bất kỳ phương thức nào, với từ khóa tĩnh.

Một lớp có thể có bất kỳ số phương thức nào để truy cập vào giá trị của các kiểu phương thức khác nhau. Trong ví dụ trên, barking (), hungry () và sleeping () là các phương thức.

Sau đây là một số chủ đề quan trọng cần được thảo luận khi nhìn vào các lớp của Ngôn ngữ Java.

Constructors

Khi thảo luận về các lớp học, một trong những chủ đề phụ quan trọng nhất sẽ là các nhà xây dựng. Mỗi lớp đều có một hàm tạo. Nếu chúng ta không viết rõ ràng một hàm tạo cho một lớp, trình biên dịch Java xây dựng một hàm tạo mặc định cho lớp đó.

Mỗi khi một đối tượng mới được tạo, ít nhất một hàm khởi tạo sẽ được gọi ra. Nguyên tắc chính của các nhà xây dựng là họ nên có cùng tên với lớp. Một lớp có thể có nhiều hơn một hàm tạo.

Sau đây là một ví dụ về một hàm tạo

Thí dụ
public class Puppy {
   public Puppy() {
   }

   public Puppy(String name) {
      // This constructor has one parameter, name.
   }
}
Học lập trình Java cũng hỗ trợ các lớp Singleton , nơi bạn có thể tạo chỉ một thể hiện của một lớp.

Lưu ý - Chúng tôi có hai loại hàm tạo khác nhau. Chúng ta sẽ thảo luận chi tiết về các nhà thầu trong các chương tiếp theo.

Tạo một đối tượng

Như đã đề cập trước đó, một lớp cung cấp các bản thiết kế cho các đối tượng. Về cơ bản, một đối tượng được tạo ra từ một lớp. Trong Java, từ khóa mới được sử dụng để tạo các đối tượng mới.

Có ba bước khi tạo một đối tượng từ một lớp

Tuyên bố - Một khai báo biến với một tên biến với một loại đối tượng.

Instantiation - Từ khóa 'mới' được sử dụng để tạo đối tượng.

Khởi tạo - Từ khóa 'mới' được theo sau bởi một cuộc gọi đến một hàm tạo. Cuộc gọi này khởi tạo đối tượng mới.

Sau đây là một ví dụ về việc tạo một đối tượng 

Thí dụ
public class Puppy {
   public Puppy(String name) {
      // This constructor has one parameter, name.
      System.out.println("Passed Name is :" + name );
   }

   public static void main(String []args) {
      // Following statement would create an object myPuppy
      Puppy myPuppy = new Puppy( "tommy" );
   }
}
Nếu chúng ta biên dịch và chạy chương trình trên, thì nó sẽ tạo ra kết quả sau:

Đầu ra

Passed Name is :tommy

Truy cập các biến thể và phương thức

Các biến và phương thức thể hiện được truy cập thông qua các đối tượng đã tạo. Để truy cập một biến mẫu, sau đây là đường dẫn đầy đủ

/* First create an object */
ObjectReference = new Constructor();

/* Now call a variable as follows */
ObjectReference.variableName;

/* Now you can call a class method as follows */
ObjectReference.MethodName(); 

Thí dụ

Ví dụ này giải thích cách truy cập các biến mẫu và các phương thức của một lớp.
public class Puppy {
   int puppyAge;

   public Puppy(String name) {
      // This constructor has one parameter, name.
      System.out.println("Name chosen is :" + name );
   }

   public void setAge( int age ) {
      puppyAge = age;
   }

   public int getAge( ) {
      System.out.println("Puppy's age is :" + puppyAge );
      return puppyAge;
   }

   public static void main(String []args) {
      /* Object creation */
      Puppy myPuppy = new Puppy( "tommy" );

      /* Call class method to set puppy's age */
      myPuppy.setAge( 2 );

      /* Call another class method to get puppy's age */
      myPuppy.getAge( );

      /* You can access instance variable as follows as well */
      System.out.println("Variable Value :" + myPuppy.puppyAge );
   }
}
Nếu chúng ta biên dịch và chạy chương trình trên, thì nó sẽ tạo ra kết quả sau:

Đầu ra

Name chosen is :tommy
Puppy's age is :2
Variable Value :2

Quy tắc khai báo tệp nguồn

Như phần cuối cùng của phần này, bây giờ hãy xem xét các quy tắc khai báo tệp nguồn. Các quy tắc này là cần thiết khi khai báo các lớp, các câu lệnh import và các câu lệnh gói trong một tệp nguồn.

Chỉ có thể có một lớp công khai cho mỗi tệp nguồn.

Tệp nguồn có thể có nhiều lớp không công khai.

Tên lớp công khai phải là tên của tệp nguồn cũng nên được nối thêm .java ở cuối. Ví dụ: tên lớp là lớp công khai Employee {} thì tệp nguồn phải là Employee.java.

Nếu lớp được định nghĩa bên trong một gói, thì câu lệnh gói phải là câu lệnh đầu tiên trong tệp nguồn.

Nếu có các câu lệnh import, thì chúng phải được viết giữa câu lệnh package và khai báo lớp. Nếu không có câu lệnh gói nào thì câu lệnh nhập phải là dòng đầu tiên trong tệp nguồn.

Các câu lệnh import và package sẽ ngụ ý đến tất cả các lớp có trong tệp nguồn. Không thể khai báo các câu lệnh nhập và / hoặc gói khác nhau cho các lớp khác nhau trong tệp nguồn.

Các lớp có nhiều cấp truy cập và có nhiều loại lớp khác nhau; các lớp trừu tượng, các lớp cuối cùng, v.v. Chúng ta sẽ giải thích về tất cả những điều này trong chương sửa đổi truy cập.

Ngoài các loại lớp được đề cập ở trên, Java cũng có một số lớp đặc biệt được gọi là Lớp bên trong và Lớp ẩn danh.

Gói Java

Nói một cách đơn giản, nó là một cách phân loại các lớp và các giao diện. Khi phát triển các ứng dụng trong Java, hàng trăm lớp và giao diện sẽ được viết, do đó việc phân loại các lớp này là phải cũng như làm cho cuộc sống trở nên dễ dàng hơn nhiều.

Báo cáo nhập khẩu

Trong Java nếu một tên đầy đủ, bao gồm các gói và tên lớp được đưa ra, sau đó trình biên dịch có thể dễ dàng xác định vị trí mã nguồn hoặc các lớp. Nhập khẩu tuyên bố là một cách để đưa ra các vị trí thích hợp cho trình biên dịch để tìm thấy rằng lớp học cụ thể.

Ví dụ, dòng sau sẽ yêu cầu trình biên dịch tải tất cả các lớp có sẵn trong thư mục java_installation / java / io

import java.io.*;

Một nghiên cứu điển hình đơn giản

Đối với nghiên cứu điển hình của chúng tôi, chúng tôi sẽ tạo ra hai lớp học. Họ là Employee và EmployeeTest.

Đầu tiên mở notepad và thêm đoạn mã sau. Hãy nhớ rằng đây là lớp Employee và lớp là một lớp public. Bây giờ, lưu tệp nguồn này với tên Employee.java.

Lớp Employee có bốn biến mẫu - tên, tuổi, chỉ định và mức lương. Lớp này có một hàm tạo được định nghĩa rõ ràng, có tham số.

Thí dụ
import java.io.*;
public class Employee {

   String name;
   int age;
   String designation;
   double salary;

   // This is the constructor of the class Employee
   public Employee(String name) {
      this.name = name;
   }

   // Assign the age of the Employee  to the variable age.
   public void empAge(int empAge) {
      age = empAge;
   }

   /* Assign the designation to the variable designation.*/
   public void empDesignation(String empDesig) {
      designation = empDesig;
   }

   /* Assign the salary to the variable salary.*/
   public void empSalary(double empSalary) {
      salary = empSalary;
   }

   /* Print the Employee details */
   public void printEmployee() {
      System.out.println("Name:"+ name );
      System.out.println("Age:" + age );
      System.out.println("Designation:" + designation );
      System.out.println("Salary:" + salary);
   }
}

Như đã đề cập trước đó trong hướng dẫn này, việc xử lý bắt đầu từ phương thức chính. Do đó, để chúng ta chạy lớp Employee này, cần có một phương thức chính và các đối tượng cần được tạo. Chúng tôi sẽ tạo một lớp riêng cho các nhiệm vụ này.

Sau đây là lớp EmployeeTest , tạo ra hai cá thể của lớp Employee và gọi các phương thức cho mỗi đối tượng để gán các giá trị cho mỗi biến.

Lưu mã sau vào tệp EmployeeTest.java.
import java.io.*;
public class EmployeeTest {

   public static void main(String args[]) {
      /* Create two objects using constructor */
      Employee empOne = new Employee("James Smith");
      Employee empTwo = new Employee("Mary Anne");

      // Invoking methods for each object created
      empOne.empAge(26);
      empOne.empDesignation("Senior Software Engineer");
      empOne.empSalary(1000);
      empOne.printEmployee();

      empTwo.empAge(21);
      empTwo.empDesignation("Software Engineer");
      empTwo.empSalary(500);
      empTwo.printEmployee();
   }
}

Bây giờ, biên dịch cả hai lớp và sau đó chạy EmployeeTest để xem kết quả như sau:

Đầu ra

C:\> javac Employee.java
C:\> javac EmployeeTest.java
C:\> java EmployeeTest
Name:James Smith
Age:26
Designation:Senior Software Engineer
Salary:1000.0
Name:Mary Anne
Age:21
Designation:Software Engineer
Salary:500.0

Tiếp theo là gì?

Trong phần tiếp theo, chúng ta sẽ thảo luận về các kiểu dữ liệu cơ bản trong Java và cách chúng có thể được sử dụng khi phát triển các ứng dụng Java.

Không có nhận xét nào:

Đăng nhận xét

Lập trình Java - Ngoại lệ

Một ngoại lệ (hoặc sự kiện đặc biệt) là một vấn đề phát sinh trong quá trình thực hiện chương trình. Khi xảy ra Ngoại lệ , luồng bình thường...