Mẹo Lớp trừu tượng trong ví dụ OOP

Mẹo Hướng dẫn Lớp trừu tượng trong ví dụ OOP 2022

Lê Hoàng Hưng đang tìm kiếm từ khóa Lớp trừu tượng trong ví dụ OOP được Update vào lúc : 2022-12-26 04:08:02 . Với phương châm chia sẻ Bí quyết về trong nội dung bài viết một cách Chi Tiết 2022. Nếu sau khi Read nội dung bài viết vẫn ko hiểu thì hoàn toàn có thể lại Comment ở cuối bài để Mình lý giải và hướng dẫn lại nha.

Khái niệm lớp trừu tượng là một trong những khái niệm cơ bản của Lập trình hướng đối tượng. Nó cho tất cả chúng ta kĩ năng quy mô hóa những khái niệm từ thế giới thực và tạo điều kiện cho việc sử dụng một trong những nguyên tắc OOP. tái sử dụng mã

Nội dung chính Show
    Tại sao tất cả chúng ta sử dụng một lớp trừu tượngVí dụ lớp trừu tượng trong JavaLớp trừu tượng Nhân viên trong JavaSử dụng lớp trừu tượng Nhân viênLớp trừu tượng không còn phương thức trừu tượng trong JavaLớp trừu tượng vs Giao diệnLớp trừu tượng Triển khai một giao diện trong JavaLớp trừu tượng trong PythonTrừu tượng và những lớp trừu tượngTóm lượclớp trừu tượng với ví dụ trong OOP là gì?Lớp trừu tượng với ví dụ thực tế là gì?lớp trừu tượng và lớp rõ ràng lý giải với những ví dụ là gì?

Lớp trừu tượng trong Lập trình hướng đối tượng (OOP) là lớp không thể khởi tạo. Nói cách khác, bạn không thể tạo một đối tượng bằng lớp trừu tượng

Ok, nhưng tôi hoàn toàn có thể làm gì với cái này?

Hãy cùng tìm hiểu những tình huống hoàn toàn có thể xảy ra khi tất cả chúng ta hoàn toàn có thể sử dụng những lớp trừu tượng

Tại sao tất cả chúng ta sử dụng một lớp trừu tượng

Các lớp trừu tượng có liên quan ngặt nghèo với khái niệm thừa kế trong OOP. Nếu bạn không chắc thừa kế là gì, trước tiên bạn nên đọc bài đăng này để bạn hoàn toàn có thể hiểu lớp trừu tượng là gì và tại sao tất cả chúng ta cần chúng trong OOP

Hãy nhớ rằng trước khi khởi đầu viết mã, trước tiên tất cả chúng ta nên thiết kế những gì tất cả chúng ta muốn viết mã

Một phần quan trọng trong thiết kế của tất cả chúng ta là xác định những lớp và quan hệ giữa chúng (thành phần, tập hợp, sử dụng và thừa kế)

Lúc này ta xác định được hai (hoặc nhiều) lớp thừa kế từ một lớp chung

Ví dụ: hãy tưởng tượng tất cả chúng ta đang lập quy mô cho một tình huống mà tất cả chúng ta phải tính lương cho nhân viên cấp dưới. Nhưng tất cả chúng ta phải quy mô hóa hai loại nhân viên cấp dưới. nhân viên cấp dưới bán thời gian và toàn thời gian

Như bạn hiểu thì công ty tính lương cho 2 loại nhân viên cấp dưới này rất khác nhau. Tuy nhiên, chúng vẫn có một số trong những thuộc tính và hiệu suất cao chung. tên, họ, id, tiền lương, v.v.

Lương là thứ nên được tính cho từng nhân viên cấp dưới. Vì vậy, tất cả chúng ta nên có một phương thức để tính lương trong lớp cơ sở của tất cả chúng ta là Nhân viên. Bằng cách này, cả hai loại nhân viên cấp dưới sẽ thừa kế phương pháp này

Chú ý tuy nhiên nhân viên cấp dưới có lương nhưng ta nên phải biết loại nhân viên cấp dưới (bán thời gian hay toàn thời gian) để tính

Đây là một trường hợp điển hình về nguyên do tại sao tất cả chúng ta có nhu yếu các lớp trừu tượng. Trong trường hợp này, phương pháp lương phải trừu tượng trong lớp nhân viên cấp dưới và có cách thực hiện tương ứng trong những lớp con theo loại nhân viên cấp dưới

Tìm phía dưới một ví dụ rõ ràng hơn liên quan đến tiền lương của nhân viên cấp dưới

Ví dụ lớp trừu tượng trong Java

Đây là trường hợp sử dụng phổ biến nhất. Đây cũng là một trong những trường hợp sử dụng phổ biến nhất lúc dạy/học thừa kế

Như bạn nên nhớ, OOP là về quy mô hóa những tình huống từ môi trường tự nhiên thiên nhiên sống đời thường thực

Giả sử tất cả chúng ta có hai loại nhân viên cấp dưới trong một công ty nhất định. quản lý và nhân viên cấp dưới phục vụ. Nhân viên quản trị có mức lương được tính theo cấp bậc của vị trí của tớ. Nếu vị trí là một trong thì lương là 5000 và nếu là 2 thì lương là 8000. Đối với nhân viên cấp dưới phục vụ ta tính lương là lương cơ bản + 6% lương cơ bản

Lưu ý rằng đây là một ví dụ đơn giản

Vì vậy, làm thế nào tất cả chúng ta hoàn toàn có thể quy mô hóa tình huống này bằng OOP?

Lớp trừu tượng Nhân viên trong Java

Từ mô tả ở trên, tất cả chúng ta hoàn toàn có thể xác định ba lớp. Nhân viên, “AdminEmployee” và “ServiceEmployee”

Lưu ý rằng tất cả “AdminEmployee” là Nhân viên và tất cả “ServiceEmployee” là Nhân viên. Điều này nghĩa là cả “AdminEmployee” và “ServiceEmployee” đều thừa kế từ “Employee”. Nếu bạn không chắc như đinh về cách xác định tài sản thừa kế, hãy tham khảo bài đăng theo link này

Mục đích chính của chúng tôi là tính lương cho nhân viên cấp dưới. Nhưng lưu ý, phương pháp tính lương còn tùy thuộc vào loại nhân viên cấp dưới (Admin hay phục vụ)

Điều này nghĩa là trong lớp Nhân viên, tất cả chúng ta không thể tính lương vì tất cả chúng ta không biết phương pháp làm. Chúng tôi không còn tất cả thông tin mà chúng tôi cần, trong trường hợp này là loại nhân viên cấp dưới

Hãy xem cách triển khai sẽ ra làm sao. Tôi sẽ sử dụng Java cho những ví dụ, nhưng logic đằng sau nó giống với những ngôn từ lập trình khác

abstract class Employee protected String name; public Employee(String name) this.name = name; abstract public float Salary();

Đây là lớp nhân viên cấp dưới của chúng tôi. Trong ví dụ này, vì tất cả chúng ta không biết phương pháp tính lương nên phương thức lương nên được khai báo trừu tượng. Nói cách khác, tất cả chúng ta không thể triển khai phương thức ở mức trừu tượng đó

Nếu tất cả chúng ta có một lớp với một phương thức trừu tượng, thì lớp đó sẽ trở thành trừu tượng. Trong trường hợp của Java, tất cả chúng ta phải khai báo rõ ràng lớp là trừu tượng bằng phương pháp sử dụng từ khóa trừu tượng trước khai báo lớp (lớp trừu tượng Nhân viên). Nó hoàn toàn có thể khác ở những ngôn từ lập trình khác, nhưng trong tất cả chúng, một lớp có phương thức trừu tượng cũng là trừu tượng

Bây giờ, tất cả chúng ta hoàn toàn có thể làm gì trong lớp trừu tượng này?

Sử dụng lớp trừu tượng Nhân viên

Cách tất cả chúng ta sử dụng những lớp trừu tượng là thông qua thừa kế

Hãy xem việc triển khai lớp “AdminEmployee”

class AdminEmployee extends Employee private Position position; public AdminEmployee(String name, Position position) super(name); this.position = position; @Override public float Salary() float salary = 0; switch (this.position) case ONE: salary = 5000; case TWO: salary = 8000; return salary;

Như bạn hoàn toàn có thể thấy, lớp trước thừa kế từ lớp trừu tượng của tất cả chúng ta

Chú ý tất cả chúng ta thêm một thuộc tính mới vì nó là đặc điểm của loại đối tượng mà lớp này đại diện. Tiếp theo, tất cả chúng ta phải triển khai hàm tạo, như vậy tất cả chúng ta mới có cách khởi tạo những đối tượng kiểu này

Thực tế tiếp theo cần xem xét là giờ đây tất cả chúng ta biết phương pháp tính lương cho loại nhân viên cấp dưới mà lớp này đại diện. nhân viên cấp dưới quản trị

Theo mô tả vấn đề của chúng tôi. ” Nhân viên quản trị có mức lương được tính theo cấp bậc của vị trí của tớ. Nếu vị trí là một trong thì lương là 5000 và nếu là 2 thì lương là 8000″. Sử dụng mô tả đó, chúng tôi triển khai (ghi đè) phương thức “Salary” trong lớp mới

Bây giờ, lớp này sẽ không hề trừu tượng nữa và tất cả chúng ta hoàn toàn có thể sử dụng nó để tạo những đối tượng như sau

AdminEmployee admin1 = new AdminEmployee(“John”, Vị trí. MỘT);

Lớp tiếp theo tất cả chúng ta phải triển khai là lớp “ServiceEmployee”

class ServiceEmployee extends Employee private float basicSalary; public ServiceEmployee(String name, float basicSalary) super(name); this.basicSalary = basicSalary; @Override public float Salary() return basicSalary + 6*basicSalary/100;

Trong trường hợp này, chúng tôi cũng luôn có thể có một thuộc tính mới theo báo cáo vấn đề. lương cơ bản

Vì vậy, chúng tôi tiến hành theo cách tương tự, chúng tôi thêm thuộc tính và triển khai hàm tạo để hoàn toàn có thể khởi tạo những đối tượng mới bằng phương pháp sử dụng lớp này

Tiếp theo, chúng tôi triển khai (ghi đè) phương thức “Salary” cho lớp mới này. Lưu ý rằng chúng tôi tính lương cho “Nhân viên phục vụ” theo cách khác với “Nhân viên quản trị”. Vì vậy, chúng tôi phản ánh sự khác lạ đó trong việc thực hiện phương pháp

Việc triển khai ở trên là cách sử dụng cổ xưa của một lớp trừu tượng. Chúng tôi sử dụng chúng để quy mô hóa trừu tượng, có những hoạt động và sinh hoạt giải trí sinh hoạt (phương thức) mà chúng tôi không thể thực hiện ở mức độ trừu tượng đó. Sau đó, chúng tôi đi xuống một mức độ trừu tượng khác bằng phương pháp triển khai một lớp mới thừa kế từ lớp trừu tượng. Ở Lever trừu tượng mới này, chúng tôi biết phương pháp triển khai những hoạt động và sinh hoạt giải trí sinh hoạt và chúng tôi làm như vậy

Trong một khối mạng lưới hệ thống phân cấp trừu tượng, tất cả chúng ta hoàn toàn có thể có bao nhiêu lớp trừu tượng tùy thích. Chúng ta hoàn toàn có thể thừa kế từ một lớp trừu tượng và không triển khai những phương thức trừu tượng. Do đó, lớp mới của tất cả chúng ta cũng tiếp tục trừu tượng

Lớp trừu tượng không còn phương thức trừu tượng trong Java

Trong Java, bạn hoàn toàn có thể khai báo một lớp trừu tượng mà tránh việc phải có một phương thức trừu tượng

Điều này sẽ có tác dụng là bạn không thể tạo những đối tượng bằng phương pháp sử dụng lớp đó vì nó trừu tượng

Đây là một cơ chế mà bạn hoàn toàn có thể sử dụng nếu bạn muốn đảm nói rằng không còn ai hoàn toàn có thể tạo những thể hiện của lớp đó

Mặc dù, theo tôi, là một cơ chế không thiết yếu, nhưng nó là một tùy chọn mà một số trong những ngôn từ lập trình đáp ứng

Vì vậy, nếu tất cả chúng ta đang quy mô hóa một tình huống mà tất cả chúng ta hoàn toàn có thể biện minh cho việc sử dụng một lớp trừu tượng mà không còn những phương thức trừu tượng, thì những ngôn từ lập trình sẽ đáp ứng cho tất cả chúng ta một phương pháp để triển khai quy mô đó

Lớp trừu tượng vs Giao diện

Một giao diện trong lập trình giúp thiết kế những hiệu suất cao phổ biến phải được thực hiện bởi một số trong những lớp nhất định

Một cách không chính thức, bạn hoàn toàn có thể nghĩ về một giao diện trong Java như một lớp không còn thuộc tính và bất kỳ triển khai phương thức nào

Một ví dụ tuyệt vời để đã cho tất cả chúng ta biết cách tất cả chúng ta sử dụng những giao diện là giao diện Có thể so sánh trong Java (IComparable trong C#)

Giao diện này chỉ có một phương pháp

public interface Comparable /** * Compares this object with the specified object for order. Returns a * negative integer, zero, or a positive integer as this object is less * than, equal to, or greater than the specified object **/ public int compareTo(T o);

Bất kỳ ngôn từ lập trình nào thì cũng biết phương pháp so sánh những số nguyên, nhưng khi nói đến nhiều chủng loại đối tượng khác, ví dụ như sinh viên, tất cả chúng ta nên cho máy tính biết phương pháp tất cả chúng ta so sánh hai sinh viên

Bất kỳ lớp nào triển khai giao diện So sánh, sẽ triển khai phương thức so sánh. Trong phương thức này, tất cả chúng ta sẽ xác định lúc nào một đối tượng to hơn đối tượng khác

Vì vậy, tóm lại, chúng tôi sử dụng một lớp trừu tượng khi thiết kế/triển khai khối mạng lưới hệ thống phân cấp những lớp và trong một trong số chúng, chúng tôi không biết phương pháp triển khai một phương thức nhất định. Mặt khác, tất cả chúng ta thường sử dụng một giao diện, khi tất cả chúng ta có nhu yếu các lớp thực hiện một hành vi chung mà không cần quan tâm đến việc chúng có cùng khối mạng lưới hệ thống phân cấp hay là không (một lớp thừa kế từ lớp kia) hay là không

Lớp trừu tượng Triển khai một giao diện trong Java

Trong một số trong những trường hợp, tất cả chúng ta hoàn toàn có thể sử dụng những lớp trừu tượng và giao diện cùng nhau

Quay trở lại ví dụ về nhân viên cấp dưới. Hãy tưởng tượng tất cả chúng ta muốn hoàn toàn có thể so sánh hai nhân viên cấp dưới và tất cả chúng ta sẽ nói một nhân viên cấp dưới to hơn nhân viên cấp dưới kia nếu tên đứng đầu theo thứ tự bảng vần âm (“Ana” to hơn “Bob”)

Trong trường hợp đó, tất cả chúng ta nên thiết kế lớp Nhân viên như sau

abstract class Employee implements Comparable protected String name; public Employee(String name) this.name = name; abstract public float Salary();

Trong ví dụ dưới đây, bạn hoàn toàn có thể thấy rằng lớp trừu tượng Employee thực hiện giao diện Comparable

Từ thời điểm này, tất cả chúng ta phải lựa chọn. Chúng ta hoàn toàn có thể triển khai những phương thức được định nghĩa trong giao diện Có thể so sánh trong lớp này Nhân viên hoặc tất cả chúng ta hoàn toàn có thể triển khai chúng trong những lớp con. Dịch vụNhân viên và Quản trị viênNhân viên

Bởi vì chúng tôi muốn so sánh hai nhân viên cấp dưới theo tên của tớ và tên đó nằm trong lớp Nhân viên, chúng tôi có tất cả những gì chúng tôi cần để triển khai phương thức trong lớp Nhân viên. Khi đó class Employee của tất cả chúng ta sẽ được implement như sau

abstract class Employee implements Comparable    protected String name;    public Employee(String name)        this.name = name;       abstract public float Salary();     @Override     public int compareTo(Employee o)         return name.compareTo(o.name);    

Kiểu String trong Java cũng setup giao diện Comparable. Do đó, tất cả chúng ta hoàn toàn có thể sử dụng phương thức compareTo được triển khai trong lớp String để so sánh hai chuỗi

Trong Java, đôi khi tất cả chúng ta sử dụng những giao diện để “quy mô hóa” nhiều thừa kế

Lớp trừu tượng trong Python

Tìm phía dưới triển khai python cho ví dụ trước của chúng tôi về nhân viên cấp dưới

from abc import ABC, abstractmethod class Employee(ABC): def __init__(self, name): self.name = name @abstractmethod def salary(self): pass class ServiceEmployee(Employee): def __init__(self, name, basic_salary): super().__init__(name) self.basic_salary = basic_salary def salary(self): return self.basic_salary + 6*self.basic_salary/100; class AdminEmployee(Employee): def __init__(self, name, position): super().__init__(name) self.position = position def salary(self): if self.position == 1: return 5000 else: return 8000

Trừu tượng và những lớp trừu tượng

Các lớp trừu tượng cũng liên quan đến trừu tượng

Khi tất cả chúng ta sử dụng một lớp trừu tượng, tất cả chúng ta đang chỉ ra một mức độ trừu tượng nhất định

Trong trường hợp ví dụ về nhân viên cấp dưới, khi tất cả chúng ta định nghĩa lớp Nhân viên, tất cả chúng ta đang “ẩn” hoặc “không xem xét” tại thời điểm đó loại nhân viên cấp dưới rõ ràng mà tất cả chúng ta đang quy mô hóa (đó là mức độ trừu tượng của tất cả chúng ta)

Ở mức độ trừu tượng đó, chúng tôi quy mô hóa mọi thứ chung cho tất cả nhân viên cấp dưới (tất cả họ đều mang tên và mức lương) và chúng tôi trì hoãn những cụ ông cụ bà thể rõ ràng hơn

Khi chúng tôi định nghĩa lớp AdminEmployee, chúng tôi tinh chỉnh mức độ trừu tượng bằng phương pháp thêm phương pháp tính lương. Tuy nhiên, một số trong những đặc điểm không được gồm có ở mức độ trừu tượng đó vì chúng tôi không cần chúng để xử lý và xử lý vấn đề của tớ. Một ví dụ là quyền lợi của nhân viên cấp dưới này là gì, tuổi nghỉ hưu, tương hỗ y tế, v.v.

Như bạn hoàn toàn có thể thấy, những lớp trừu tượng và những lớp được triển khai đầy đủ (những lớp không trừu tượng) đều là những lớp trừu tượng. Chúng ta thường cần cả hai loại lớp trong Lập trình hướng đối tượng

Tóm lược

Các lớp trừu tượng rất ngặt nghèo với việc sử dụng tính thừa kế (và tính đa hình)

Đó là một cơ chế hữu ích tạo điều kiện tái sử dụng mã và giúp bạn tạo những quy mô đúng chuẩn hơn và thể hiện tốt hơn những tình huống nhất định từ môi trường tự nhiên thiên nhiên sống đời thường thực

lớp trừu tượng với ví dụ trong OOP là gì?

Các lớp và phương thức trừu tượng là lúc lớp cha có một phương thức được đặt tên nhưng cần (những) lớp con của nó để thực hiện những tác vụ. Lớp trừu tượng là lớp chứa ít nhất một phương thức trừu tượng . Một phương thức trừu tượng là một phương thức được khai báo, nhưng không được triển khai trong mã.

Lớp trừu tượng với ví dụ thực tế là gì?

Một ví dụ rõ ràng về lớp trừu tượng sẽ là lớp mang tên Animal . Bạn nhìn thấy nhiều loài động vật trong môi trường tự nhiên thiên nhiên sống đời thường thực, nhưng chỉ có những loại động vật. Đó là, bạn không bao giờ nhìn vào một thứ gì đó màu tím và có lông và nói "đó là một loài vật và không còn cách nào xác định rõ ràng hơn nó".

lớp trừu tượng và lớp rõ ràng lý giải với những ví dụ là gì?

Lớp rõ ràng là lớp con của lớp trừu tượng, lớp này triển khai tất cả phương thức trừu tượng của nó . Các phương thức trừu tượng không thể có phần thân. Lớp trừu tượng hoàn toàn có thể có những trường tĩnh và phương thức tĩnh, in như những lớp khác. Một lớp trừu tượng không thể được khai báo là ở đầu cuối. Tải thêm tài liệu liên quan đến nội dung bài viết Lớp trừu tượng trong ví dụ OOP programming

Clip Lớp trừu tượng trong ví dụ OOP ?

Bạn vừa tham khảo Post Với Một số hướng dẫn một cách rõ ràng hơn về Review Lớp trừu tượng trong ví dụ OOP tiên tiến nhất

Chia Sẻ Link Tải Lớp trừu tượng trong ví dụ OOP miễn phí

Bạn đang tìm một số trong những Chia Sẻ Link Cập nhật Lớp trừu tượng trong ví dụ OOP miễn phí.

Giải đáp thắc mắc về Lớp trừu tượng trong ví dụ OOP

Nếu sau khi đọc nội dung bài viết Lớp trừu tượng trong ví dụ OOP vẫn chưa hiểu thì hoàn toàn có thể lại phản hồi ở cuối bài để Tác giả lý giải và hướng dẫn lại nha #Lớp #trừu #tượng #trong #ví #dụ #OOP