- vừa được xem lúc

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

0 0 5

Người đăng: H Hiếu

Theo Viblo Asia

0. Tại sao lại dùng lập trình hướng đối tượng

OOP là một trong những kĩ thuật lập trình được sử dụng phổ biến hiện nay. Hầu hết các ngôn ngữ lập trình hiện nay đều hỗ trợ lập trình hướng đối tượng như Java, C#, .NET, C++,...

Ưu điểm của OOP:

  • Tránh trùng lặp code
  • Linh hoạt trong việc thiết kế và bảo trì hệ thống.
  • Rút ngắn thời gian xây dựng hệ htống

1. OOP hay lập trình hướng đối tượng là gì?

lập trình hướng đối tượng (OOP) là một kỹ thuật cho phép lập trình viên tạo ra các đối tượng trong code và trừu tượng hóa các đối tượng.

Đối tượng là gì?

Đối tượng là những sự vật sự việc mà nó có những tính chất, hành động giống nhau và ta gom lại thành đối tượng ví dụ: Cá là một đối tượng.

Một đối tượng sẽ gồm 2 thông tin: Thuộc tínhphương thức.

  • Thuộc tính là những thông tin, đặc điểm của đối tượng. Ví dụ: con cá có màu vàng, vảy cứng,...
  • Phương thức là những thao tác, hành động mà đối tượng đó có thể thực hiện. Ví dụ: con cá có thể bơi,...

Lớp

Một lớp là một kiểu dữ liệu bao gồm các thuộc tính và các phương thức được định nghĩa từ trước. Đây chính lá sự trừu tượng hóa của đối tượng. Khác với kiểu dữ liệu thông thường. Một lớp là một đơn vị bao gồm sự kết hợp giữa các phương thức và thuộc tính. Có thể hiểu lớp là cái khuôn mẫu để tạo ra một đối tượng.

2. Các nguyên lý cơ bản của OOP

Tính đóng gói (Encapsulation)

  • Các dữ liệu và phương thức có liên quan tới nhau được đóng gói thành các lớp để tiện cho việc quản lý và sử dụng. Mỗi lớp được xây dựng để thực hiện một nhóm chức năng đặc trương của riêng lớp đó.
  • Đóng gói chính là để che giấu xử lý bên trong đối tượng. Những đối tượng khác không được trực tiếp thay đổi trạng thái hay tính chất của đối tượng và chỉ có thể tác động với những thuộc tính hay phương thức mà đối tượng cho phép.
public class Book { private String title; private String author; public Book(String title, String author) { this.title = title; this.author = author; } public String getTitle() { return title; } public String getAuthor() { return author; }
}

Ví dụ trên: ta có class Book và title và author chỉ có thể được đọc chứ không được ghi bới những đối tượng khác.

Tính kế thừa (Inheritance)

Nó cho phép xây dựng một lớp mới dựa trên các định nghĩa của lớp đã có. Có nghĩa là lớp cha có thể chia sẻ dữ liệu và phương thức cho các lớp con. Các lớp con không cần phải định nghĩa lại, ngoài ra còn có thể mở rộng các thành phần kế thừa và bổ sung thêm các thành phần mới. Tính chất này có tác đụng tái sử dụng code và tránh việc lặp code.

Có Tổng cộng 4 kiểu kế thừa:

  • Đơn kế thừa: 1 class con kế thừa 1 class cha.
  • Đa kế thừa: 1 class con kế thừa nhiều class cha.
  • Kế thừa đa cấp: class A kế thừa từ class B, class B kế thừa từ class C
  • Kế thừa thứ bậc: một class được nhiều class kế thừa

Ví dụ:

class Animal { private String name; public Animal(String name) { this.name = name; } public String getName() { return name; } public void makeSound() { System.out.println("Some generic animal sound"); } public void eat() { System.out.println(name + " is eating."); }
} class Dog extends Animal { public Dog(String name) { super(name); } @Override public void makeSound() { System.out.println(getName() + " says: Woof Woof"); } }

class Dog kế thừa class Animal và kế thừa phương thức eat(). với phương thức makeSound() thì chó sẽ sủa chứ không phải tạo âm thanh khác nên sẽ có thể ghi đề phương thức của lớp cha.

Tính đa hình (Polymorphism)

Tính đa hình là một hành động có thể được thực hiện bằng nhiều cách khác nhau. Hiểu một cách đơn giản đa hình là khái niệm mà 2 hoặc nhiều lớp có những phương thức giống nhau nhưng có thể thực thi theo nhiều cách thức khác nhau.

Như ở ví dụ trên cùng là phương thức makeSound nhưng con chó sẽ sủa còn những con vật khác sẽ có những âm thanh khác. như con mèo kêu meo meo, con vợ sẽ là tiền đâu 😃)

trong code để thể hiện tính đa hình có 2 cách: Overloading: Ghi đè tên phương thức của lớp cha. (Như ví dụ Dog và Animal) Overriding: Nạp chồng các phương thức có cùng tên nhưng khác tham số.

Tính trừu tượng (Abstraction)

Trừu tượng có nghĩa là tổng quát hóa một cái gì đó, không cần chú ý chi tiết bên trong. Nó không quan tâm đến chi tiết bên trong là gì nhưng người ta vẫn hiểu mỗi khi nghe về nó.

Ví dụ: Chạy xe máy ta chỉ cần biết vặn ga là xe sẽ tiến lên không cần quan tâm làm thế nào mà khi vặn ga lại có thể tiến lên.

Tính trừu tượng chọn ra các thuộc tính, phương thức của một đối tượng cần thiết cho việc giải quyết bài toán.

Ví dụ: Đi xe 2 bánh thì ta sẽ phải vặn tay ga để đi mà không cần quan tâm nó là xe máy hay xe điện.

Tài liệu tham khảo

https://viblo.asia/p/co-ban-ve-lap-trinh-huong-doi-tuong-RnB5pb6rZPG

https://topdev.vn/blog/oop-la-gi/

Bình luận

Bài viết tương tự

- vừa được xem lúc

4 đặc tính của lập trình hướng đối tượng (Object oriented program)

Lập trình hướng đối tượng quá quen thuộc rồi bạn nào học lập trình đều phải học, đi phỏng vấn cũng vậy hỏi suốt(chắc cái này tùy vào vị trí tuyển dụng chủ yếu junior chắc chắn sẽ hỏi).nó là nền tảng cho hầu hết các design pattern hiện nay.

0 0 64

- vừa được xem lúc

Khác nhau giữa abstract class và interface khi nào dùng chúng

Nhắc đến Interface và abstract class hãy nhớ 2 từ này khá clear rồi, Khi sử dụng Interface là bạn Implement còn sử dụng abstract class là bạn extend. . Interface:. .

0 0 56

- vừa được xem lúc

So sánh Interface và Abstract trong lập trình hướng đối tượng.

Tổng quan. Interface và Abstract class là 2 khái niệm cơ bản trong lập trình OOP.

0 0 88

- vừa được xem lúc

Áp Dụng Nguyên Tắc SOLID Trong Lập Trình

Giới Thiệu. 1. SOLID là gì. SOLID là viết tắt của 5 chữ cái đầu trong 5 nguyên tắc:.

0 0 58

- vừa được xem lúc

Kỹ thuật giải quyết bài toàn về policy và công thức tính toán động cho sản phẩm phần mềm

Dạo này tôi có một mối duyên rất tình cờ với việc làm các phần mềm thuộc lĩnh vực tài chính và ngân hàng. Một số bài toán trong lĩnh vực này làm tôi nhớ đến những ngày đầu làm việc với phần mềm Trinet

0 0 48

- vừa được xem lúc

Object Relational Mapping

Trong cách phát triển ứng dụng web hiện nay chắc hẳn các bạn đã quen với với từ khóa ORM(Object Relational Mapping). Khi mà thời đại của các framework ứng với các ngôn ngữ đang lên ngôi một cách mạnh

0 0 52