Lập trình hướng đối tượng là một phong cách lập trình được liên kết với các khái niệm như lớp, đối tượng, Kế thừa, Đóng gói, Trừu tượng, Đa hình

Bạn đang xem: < font style = "vertical-align: inherit;"> lập trình hướng đối tượng java

Lập trình hướng đối tượng là một phong cách lập trình gắn liền với các khái niệm như lớp, đối tượng, Kế thừa, Đóng gói, Trừu tượng, Đa hình. Hầu hết các ngôn ngữ lập trình phổ biến như Java, C ++, C #, Ruby, v.v. đều tuân theo mô hình lập trình hướng đối tượng.

Lập trình hướng đối tượng là gì?

Lập trình hướng đối tượng (OOP) đề cập đến kiểu lập trình trong đó người lập trình xác định kiểu dữ liệu của cấu trúc dữ liệu và kiểu hoạt động có thể được áp dụng cho cấu trúc dữ liệu. < / p>

Java là kỹ năng được tìm kiếm nhiều nhất, chúng ta sẽ nói về các khái niệm lập trình hướng đối tượng trong Java. Một ứng dụng dựa trên đối tượng trong Java dựa trên việc khai báo các lớp, tạo các đối tượng từ chúng và tương tác giữa các đối tượng này. Tôi đã thảo luận về các Lớp và Đối tượng Java, đây cũng là một phần của khái niệm lập trình hướng đối tượng, trong blog trước của tôi .

< / strong> bây giờ.

Hướng dẫn nghề nghiệp về công nghệ của Edureka 2019 đã ra mắt! Các vai trò công việc hấp dẫn nhất, lộ trình học tập chính xác, triển vọng ngành & amp; thêm trong hướng dẫn. Tải xuống ngay bây giờ.

Bốn điều cơ bản là gì các nguyên tắc / khối xây dựng của OOP (lập trình hướng đối tượng)?

Các khối xây dựng của lập trình hướng đối tượng là Kế thừa, Đóng gói, Trừu tượng và Đa hình. Hãy hiểu thêm về từng loại trong số chúng theo trình tự sau:

Lợi ích của Lập trình hướng đối tượng là gì?

  1. Cải thiện năng suất trong quá trình phát triển phần mềm

  2. Khả năng bảo trì phần mềm được cải thiện
  3. Tốc độ phát triển nhanh hơn
  4. Chi phí phát triển thấp hơn
  5. Phần mềm chất lượng cao hơn

Tuy nhiên, có một số thách thức liên quan đến OOP, đó là:

  1. Đường cong học tập sâu sắc

    < / li>

  2. Kích thước chương trình lớn hơn
  3. Thực thi chương trình chậm hơn
  4. Nó không phải là một kích thước phù hợp với tất cả các giải pháp

Hãy bắt đầu với khái niệm Lập trình hướng đối tượng đầu tiên, tức là Kế thừa.

Lập trình hướng đối tượng: Kế thừa

Trong OOP, các chương trình máy tính được thiết kế theo cách mà mọi thứ là một đối tượng tương tác với nhau. Kế thừa là một trong những khái niệm trong đó các thuộc tính của một lớp có thể được kế thừa bởi lớp kia. Nó giúp sử dụng lại mã và thiết lập mối quan hệ giữa các lớp khác nhau.

Như chúng ta có thể thấy trong hình, một đứa trẻ kế thừa tài sản từ cha mình. Tương tự, trong Java, có hai lớp:

1. Lớp cha (Super hoặc Base)

2. Lớp con (Lớp con hoặc Lớp bắt nguồn)

Một lớp kế thừa các thuộc tính được gọi là Lớp Con trong khi lớp có các thuộc tính được kế thừa được gọi là Lớp cha.

Thừa kế được phân thành 4 loại:

Vì vậy, hãy bắt đầu với loại đầu tiên thừa kế tức là Thừa kế một lần:

  1. Thừa kế Một lần:

Trong kế thừa đơn, một lớp kế thừa các thuộc tính của lớp khác. Nó cho phép một lớp dẫn xuất kế thừa các thuộc tính và hành vi từ một lớp cha duy nhất. Điều này sẽ cho phép khả năng tái sử dụng mã cũng như thêm các tính năng mới vào mã hiện có.

Ở đây, Lớp A là lớp cha của bạn và Lớp B là lớp con của bạn kế thừa các thuộc tính và hành vi của lớp cha. .

Hãy xem cú pháp cho thừa kế đơn:


Hạng A
{
---
}
Lớp B mở rộng A {
---
}

2. Kế thừa Đa cấp:

Khi một lớp được dẫn xuất từ ​​một lớp cũng được dẫn xuất từ ​​một lớp khác, tức là một lớp có nhiều hơn một lớp cha nhưng ở các cấp độ khác nhau, kiểu kế thừa như vậy được gọi là Kế thừa Đa cấp.

Nếu chúng ta nói về lưu đồ, lớp B kế thừa các thuộc tính và hành vi của lớp A và lớp C kế thừa thuộc tính của lớp B. Ở đây A là lớp cha cho B và lớp B là lớp cha cho C. Vì vậy, trong trường hợp này, lớp C thừa kế ngầm các thuộc tính và phương thức của lớp A cùng với Lớp B. Đó là kế thừa đa cấp.

Hãy xem cú pháp cho kế thừa đa cấp trong Java:

 Lớp A {
---
}
Lớp B mở rộng A {
---
}
Lớp C mở rộng B {
---
}

3. Kế thừa phân cấp:

Khi một lớp có nhiều lớp con (lớp con) hay nói cách khác, nhiều lớp con có cùng lớp cha, thì kiểu kế thừa như vậy được gọi là phân cấp .

Nếu chúng ta nói về lưu đồ, Lớp B và C là các lớp con được kế thừa từ lớp cha tức là Lớp A.

Hãy xem cú pháp kế thừa phân cấp trong Java:

 Lớp A {
---
}
Lớp B mở rộng A {
---
}
Lớp C mở rộng A {
---
} 
  1. Kế thừa Kết hợp:


Kế thừa kết hợp là sự kết hợp của đa kế thừa và kế thừa đa cấp. Vì đa kế thừa không được hỗ trợ trong Java vì nó dẫn đến sự mơ hồ, vì vậy kiểu kế thừa này chỉ có thể đạt được thông qua việc sử dụng các giao diện.

Nếu chúng ta nói về lưu đồ, lớp A là lớp cha cho lớp B và C, trong khi Lớp B và C là lớp cha của D là lớp con duy nhất của B và C.

Bây giờ chúng ta đã học về kế thừa và các kiểu khác nhau của chúng. Hãy chuyển sang một khái niệm lập trình hướng đối tượng khác, tức là Đóng gói.

Lập trình hướng đối tượng: Đóng gói

Đóng gói là một cơ chế mà bạn liên kết dữ liệu và mã của bạn với nhau như một đơn vị duy nhất. Nó cũng có nghĩa là ẩn dữ liệu của bạn để đảm bảo an toàn trước bất kỳ sửa đổi nào. Điều đó có nghĩa là gì? Cách tốt nhất để hiểu về bao gói là xem ví dụ về viên nang y tế, nơi thuốc luôn an toàn bên trong viên nang. Tương tự, thông qua tính năng đóng gói, các phương thức và biến của một lớp được ẩn và an toàn.

Chúng ta có thể đạt được tính đóng gói trong Java bằng cách:

  • < p> Khai báo các biến của một lớp là private.

  • Cung cấp các phương thức setter và getter công khai để sửa đổi và xem các giá trị của biến.

  • >

    Chúng ta hãy xem đoạn mã dưới đây để hiểu rõ hơn về tính năng đóng gói:

    nhân viên hạng công khai {
     tên chuỗi riêng;
     public String getName () {
     trả lại tên;
     }
     public void setName (String name) {
     this.name = tên;
     }
     public static void main (String [] args) {
     }
    }
    

    Hãy để chúng tôi cố gắng hiểu đoạn mã trên. Tôi đã tạo một Nhân viên lớp có một biến riêng là tên . Sau đó, chúng tôi đã tạo một phương thức getter và setter mà qua đó chúng tôi có thể lấy và đặt tên của một nhân viên. Thông qua các phương thức này, bất kỳ lớp nào muốn truy cập vào biến name đều phải thực hiện bằng cách sử dụng các phương thức getter và setter này.

    Hãy chuyển sang khái niệm lập trình hướng đối tượng thứ ba của chúng ta, tức là Trừu tượng.

    Lập trình hướng đối tượng: Trừu tượng

    Tính trừu tượng đề cập đến chất lượng của việc xử lý các ý tưởng hơn là các sự kiện. Về cơ bản, nó giải quyết việc ẩn các chi tiết và hiển thị những thứ cần thiết cho người dùng. Nếu bạn nhìn vào hình ảnh ở đây, bất cứ khi nào chúng tôi nhận được cuộc gọi, chúng tôi sẽ có tùy chọn nhận hoặc chỉ từ chối cuộc gọi. Nhưng trên thực tế, có rất nhiều đoạn mã chạy ngầm. Vì vậy, bạn không biết quá trình xử lý nội bộ về cách một cuộc gọi được tạo ra, đó là vẻ đẹp của sự trừu tượng. Do đó, trừu tượng hóa giúp giảm bớt sự phức tạp. Bạn có thể đạt được sự trừu tượng theo hai cách:

    a) Lớp trừu tượng

    b) Giao diện

    Hãy hiểu những khái niệm này chi tiết hơn .

    Lớp trừu tượng: Lớp trừu tượng trong Java chứa từ khóa ‘trừu tượng’. Bây giờ từ khóa trừu tượng có nghĩa là gì? Nếu một lớp được khai báo là trừu tượng, nó không thể được khởi tạo, có nghĩa là bạn không thể tạo một đối tượng của một lớp trừu tượng. Ngoài ra, một lớp trừu tượng có thể chứa các phương thức trừu tượng cũng như cụ thể.
    Lưu ý: Bạn có thể đạt được độ trừu tượng 0-100% bằng cách sử dụng lớp trừu tượng.

    Để sử dụng một lớp trừu tượng, bạn phải kế thừa nó từ một lớp khác mà bạn phải cung cấp các triển khai cho chính các phương thức trừu tượng ở đó, nếu không nó cũng sẽ trở thành một lớp trừu tượng.

    Hãy xem cú pháp của một lớp trừu tượng:

    Abstract class Mobile {// abstract class mobile
    Tóm tắt void run (); // phương thức trừu tượng
    

    Giao diện: Giao diện trong Java là bản thiết kế của một lớp hay bạn có thể nói nó là một tập hợp các phương thức trừu tượng và các hằng số tĩnh. Trong một giao diện, mỗi phương thức là công khai và trừu tượng nhưng nó không chứa bất kỳ phương thức khởi tạo nào. Cùng với tính trừu tượng, giao diện cũng giúp đạt được đa kế thừa trong Java.
    Lưu ý: Bạn có thể đạt được 100% tính trừu tượng bằng cách sử dụng giao diện.

    Vì vậy, giao diện về cơ bản là một nhóm các phương thức có liên quan với nhau với các phần thân trống. Hãy để chúng tôi hiểu rõ hơn về các giao diện bằng cách lấy ví dụ về giao diện ‘ParentCar’ với các phương thức liên quan của nó.

    
    giao diện công khai ParentCar {
    public void changeGear (int newValue);
    public void speedUp (int increment);
    public void applyBrakes (int giảm dần);
    }
    
    

    Những phương pháp này cần có ở mọi ô tô, phải không? Nhưng cách làm việc của chúng sẽ khác.

    Giả sử bạn đang làm việc với ô tô số sàn, ở đó bạn phải tăng số một, nhưng nếu bạn đang làm việc với ô tô số tự động, lúc đó hệ thống của bạn quyết định cách chuyển số liên quan đến tốc độ. Do đó, không phải tất cả các lớp con của tôi đều có cùng một logic được viết cho. Trường hợp tương tự cũng xảy ra, bây giờ giả sử khi bạn nhấn một chân ga, nó sẽ tăng tốc với tốc độ 10kms hoặc 15kms. Nhưng giả sử, ai đó đang lái một chiếc siêu xe, khi đó nó tăng thêm 30 km hoặc 50kms. Một lần nữa logic khác nhau. Tương tự như vậy đối với trường hợp một người có thể có hệ thống phanh mạnh mẽ, người khác có thể không.

    Vì tất cả các chức năng đều phổ biến với tất cả các lớp con của tôi, tôi đã tạo giao diện ‘ParentCar’ nơi tất cả các chức năng đều có mặt. Sau đó, tôi sẽ tạo một lớp con triển khai giao diện này, trong đó định nghĩa cho tất cả các phương thức này khác nhau.

    Tiếp theo, hãy xem xét chức năng làm cách nào bạn có thể triển khai giao diện này.
    Vì vậy, để triển khai giao diện này, tên của lớp học của bạn sẽ thay đổi thành bất kỳ thương hiệu cụ thể nào của Xe hơi, giả sử tôi sẽ đi một chiếc “Audi”. Để triển khai giao diện lớp, tôi sẽ sử dụng từ khóa ‘implement’ như hình bên dưới:

    hạng công cộng Audi triển khai ParentCar {
    int speed = 0;
    int gear = 1;
    public void changeGear (int value) {
    gear = giá trị;
    }
    public void speedUp (int increment)
    {
    speed = tốc độ + gia số;
    }
    public void applyBrakes (int giảm dần)
    {
    speed = sự giảm tốc độ;
    }
    void printStates () {
    System.out.println ("speed:" + speed + "gear:" + gear);
    }
    public static void main (String [] args) {
    // VIỆC CẦN LÀM Sơ khai phương thức được tạo tự động
    Audi A6 = Audi mới ();
    A6.speedUp (50);
    A6.printStates ();
    A6.changeGear (4);
    A6.SpeedUp (100);
    A6.printStates ();
    }
    }
    
    

    Ở đây như bạn có thể thấy, tôi đã cung cấp các chức năng cho các phương thức khác nhau mà tôi đã khai báo trong lớp giao diện của mình. Việc triển khai một giao diện cho phép một lớp trở nên chính thức hơn về hành vi mà nó hứa cung cấp. Bạn cũng có thể tạo một lớp khác, chẳng hạn như lớp BMW có thể kế thừa cùng một giao diện ‘xe hơi’ với các chức năng khác nhau.

    Vì vậy, tôi hy vọng các bạn hiểu rõ về giao diện và cách bạn có thể đạt được sự trừu tượng khi sử dụng nó.

    < p> Cuối cùng, khái niệm lập trình hướng đối tượng cuối cùng là Đa hình.

    Lập trình hướng đối tượng: Đa hình

    Đa hình có nghĩa là lấy nhiều các hình thức, trong đó ‘poly’ có nghĩa là nhiều và ‘morph’ có nghĩa là các hình thức. Nó là khả năng của một biến, hàm hoặc đối tượng có nhiều dạng. Nói cách khác, tính đa hình cho phép bạn xác định một giao diện hoặc phương thức và có nhiều triển khai.

    Hãy hiểu điều này bằng cách lấy một ví dụ thực tế và cách khái niệm này phù hợp với Lập trình hướng đối tượng.

    Hãy xem xét kịch bản thế giới thực này trong cricket, chúng tôi biết rằng có nhiều loại bowler khác nhau, chẳng hạn như bowler nhanh, bowler tốc độ trung bình và spinners. Như bạn có thể thấy trong hình trên, có một lớp cha- BowlerClass và nó có ba lớp con: FastPacer , MediumPacer Con quay . Hạng bowler có đ ượ c b. > Đ ượ c Đ ượ c th ế b. Đ ượ c Nh ư ng b ng Đ ượ c th ế / b> t đ ượ c v t đ ượ / b> t đ ượ c b> ă ng th c ph t c nh. / b> t đ ượ c b. > Đ ượ c Đ ượ c th ế b. Trong đó tất cả các lớp con đang kế thừa phương thức này. Như chúng ta đều biết rằng một người chơi bowling nhanh sẽ đánh bóng khác so với người chơi nhịp độ trung bình và người xoay tròn về tốc độ chơi bowling, thời gian chạy lâu và cách chơi bowling, v.v. Tương tự như vậy, việc thực hiện < b. Đ ượ c Đ ượ c th ế / b> t đ ượ c b> t đ ượ ượ c b c đ ượ c Đ ượ c Đ ượ c th ế gi i phương pháp b Đ ượ c Đ ượ c th ế / b> t đ ượ c b. > Đ ượ c () cũng sẽ khác so với những người chơi bowler khác. Và điều tương tự cũng xảy ra với lớp spinner.
    Điểm của cuộc thảo luận ở trên chỉ đơn giản là một tên giống nhau có xu hướng nhiều dạng. Cả ba lớp trên đều kế thừa < b. Đ
    ượ c Đ ượ c th ế / b> t đ ượ c b < / b> cú v t đ ượ c ingMethod Đ ượ c th ế / b> t đ ượ c b. > Đ ượ c () nhưng cách triển khai của chúng hoàn toàn khác nhau.

    Tính đa hình trong Java có hai loại:

    1. Đa hình thời gian chạy

    2. Đa hình thời gian biên dịch

    Đa hình thời gian chạy: Trong Java, đa hình thời gian chạy đề cập đến một quá trình trong đó lệnh gọi đến một phương thức ghi đè được giải quyết trong thời gian chạy thay vì thời gian biên dịch. Trong trường hợp này, một biến tham chiếu được sử dụng để gọi một phương thức được ghi đè của lớp cha tại thời điểm chạy. Ghi đè phương thức là một ví dụ về tính đa hình thời gian chạy. Chúng ta hãy xem đoạn mã sau để hiểu cách hoạt động của phương thức ghi đè:

    
    Công chúng Hạng BowlerClass {
    void bowlingMethod ()
    {
    System.out.println ("quả dưa");
    }
    public Class FastPacer {
    void bowlingMethod ()
    {
    System.out.println ("quả cầu nhanh");
    }
    Công khai tĩnh void main (String [] args)
    {
    FastPacer obj = new FastPacer ();
    obj.bowlingMethod ();
    }
    }
    

    Đa hình thời gian biên dịch: Trong Java, đa hình thời gian biên dịch đề cập đến một quá trình trong đó lời gọi đến một phương thức được nạp chồng được giải quyết tại thời điểm biên dịch chứ không phải tại thời điểm chạy. Nạp chồng phương thức là một ví dụ về tính đa hình thời gian biên dịch. Nạp chồng phương thức là một tính năng cho phép một lớp có hai hoặc nhiều phương thức có cùng tên nhưng các đối số được truyền cho các phương thức là khác nhau. Không giống như ghi đè phương thức, các đối số có thể khác nhau về:

    1. Số lượng tham số được truyền cho một phương thức

    2. Loại dữ liệu của tham số

    3. Chuỗi các kiểu dữ liệu khi được truyền cho một phương thức.

    Hãy xem đoạn mã sau để hiểu cách thức hoạt động của phương thức nạp chồng: < / p>

    người đăng ký lớp {
    Static int add (int a, int b)
    {
    trả về a + b;
    }
    phép cộng kép tĩnh (kép a, kép b)
    {
    trả về a + b;
    }
    
    public static void main (String args [])
    {
    System.out.println (Adder.add (11,11));
    System.out.println (Adder.add (12.3,12.6));
    }
    } 

    Tôi hy vọng các bạn đã hiểu rõ tất cả các khái niệm lập trình hướng đối tượng mà chúng ta đã thảo luận ở trên, tức là kế thừa, đóng gói, trừu tượng và đa hình. Giờ đây, bạn có thể làm cho ứng dụng Java của mình an toàn hơn, đơn giản hơn và có thể tái sử dụng bằng cách sử dụng các khái niệm Java OOPs. Hãy đọc blog tiếp theo của tôi trên Chuỗi Java , nơi tôi sẽ giải thích tất cả về Chuỗi cũng như các phương pháp và giao diện khác nhau của nó.

    Bây giờ bạn đã hiểu các khái niệm về Lập trình hướng đối tượng trong Java, hãy xem đào tạo Java của Edureka, một công ty học trực tuyến đáng tin cậy với mạng lưới hơn 250.000 người học hài lòng trải dài trên toàn cầu. Khóa đào tạo và cấp chứng chỉ về Java J2EE và SOA của Edureka được thiết kế cho sinh viên và các chuyên gia muốn trở thành Nhà phát triển Java. Khóa học được thiết kế để cung cấp cho bạn khởi đầu về lập trình Java và đào tạo bạn về cả khái niệm Java cốt lõi và nâng cao cùng với các khung Java khác nhau như Hibernate & amp; Mùa xuân.

    Bạn có câu hỏi cho chúng tôi? Vui lòng đề cập đến vấn đề này trong phần nhận xét của blog “Lập trình hướng đối tượng” này và chúng tôi sẽ liên hệ lại với bạn trong thời gian sớm nhất.


Xem thêm những thông tin liên quan đến chủ đề lập trình hướng đối tượng java

Java – Bài 27: Tổng quan về lập trình hướng đối tượng

  • Tác giả: thân triệu
  • Ngày đăng: 2020-01-14
  • Đánh giá: 4 ⭐ ( 8102 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Hướng dẫn học lập trình Java cơ bản và nâng cao. Học lập trình Java cho người mới bắt đầu. Học lập trình Java phần lập trình hướng đối tượng. thân triệu channel-let’s grow together!

DOWNLOAD miễn phí tài liệu lập trình hướng đối tượng Java

  • Tác giả: codegym.vn
  • Đánh giá: 5 ⭐ ( 1399 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Lập trình hướng đối tượng trong Java: lớp và đối tượng

  • Tác giả: codelearn.io
  • Đánh giá: 3 ⭐ ( 3065 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Lập trình hướng đối tượng là một phương pháp để giải quyết bài toán lập trình mà khi áp dụng code sẽ trở nên dễ phát triển và dễ bảo trì hơn.

Lập trình hướng đối tượng trong Java

  • Tác giả: howkteam.vn
  • Đánh giá: 3 ⭐ ( 1134 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Lập trình hướng đối tượng trong Java

JAVA – Lập trình Hướng đối tượng

  • Tác giả: dotnet.edu.vn
  • Đánh giá: 3 ⭐ ( 7180 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Java là một ngôn ngữ lập trình hướng đối tượng vì vậy nó cũng hỗ trợ các đặc tính của lập trình hướng đối tượng

Lập trình hướng đối tượng Java là gì?

  • Tác giả: devcamp.edu.vn
  • Đánh giá: 4 ⭐ ( 9610 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Lập trình hướng đối tượng Java có 4 thuộc tính chính: kế thừa, đóng gói, trừu tượng, đa hình. Ngoài ra nó còn có hai khía cạnh : lớp và đối tượng.

Lập trình hướng đối tượng (OOPs) trong Java

  • Tác giả: topdev.vn
  • Đánh giá: 4 ⭐ ( 4995 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Lập trình hướng đối tượng (Object Oriented Programing – OOP) là phương pháp thiết kế một chương trình bởi sử dụng các lớp và các đối tượng.

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình

Xem Thêm  Nối chuỗi trong C - cách nối chuỗi trong c ++

By ads_php