Thuật toán và OOP là hai thuật ngữ khác nhau, chỉ có điểm chung, chúng là CS -terms. Đơn giản - Một thuật toán giống như một công thức nấu ăn : để làm x bạn cần các thành phần sau và thực hiện bước 1,2,3,4,5,6 ... sau đó bạn đã chuẩn bị bữa ăn.
Điều đó nói rằng, có vẻ như một sự phù hợp tự nhiên cho các thuật toán đại số được mô tả theo một cách thủ tục . Thủ tục có nghĩa là không có gì khác hơn: đầu tiên làm x và sau đó làm y .
Một vấn đề phổ biến là: »Cách sắp xếp một bộ x ?«. Một giải pháp dễ hiểu là bubble-sort
:
- Lặp lại tập hợp từ phần tử cuối cùng miễn là bạn chưa đạt đến phần tử đầu tiên và trong khi lặp lại
- Bắt đầu lần lặp thứ 2 từ đầu đến phần tử hiện tại của lần lặp đầu tiên và
- So sánh yếu tố hiện tại của (2) với người kế nhiệm
- Nếu lớn hơn, hoán đổi vị trí
Đó là mô tả thuật toán / bằng lời nói của thuật toán bubblesort
.
Ở đây có một triển khai thủ tục / mã giả
bubbleSort(Array A)
for (n=A.size; n>1; n=n-1){
for (i=0; i<n-1; i=i+1){
if (A[i] > A[i+1]){
A.swap(i, i+1)
}
}
}
Điều đó thật dễ dàng.
Làm thế nào mà nó liên quan đến OOP ? Bạn có thể sử dụng thuật toán này để xử lý các bộ sưu tập (một đối tượng) của các đối tượng :
Ví dụ trong Javascript (mặc dù không có OO-Lingo sạch , nhưng gần như không có bản tóm tắt và dễ hiểu)
objects =[{"name":"Peter"}, {"name":"Paul"}, {"name":"Mary"}]
compareObjects=function(x,y){ return x.name>y.name };
sorted = objects.sort(compareObjects)
console.log(sorted)
Chúng ta có a) một bộ sưu tập objects
, b) một phương thức phổ biến cho bộ sưu tập sort
này chứa / tóm tắt thuật toán sắp xếp và c) các đối tượng của chúng ta Peter , Paul và Mary . Các đặc điểm kỹ thuật để phân loại được tìm thấy ở đây .
Mối quan hệ giữa các thuật toán và OOP là gì? Có phải họ là hai chủ đề độc lập?
Từ những gì đã nói, cần phải rõ ràng, câu trả lời nên là: có, họ đang độc lập.
Làm thế nào OOP có thể giúp các thuật toán? Hoặc theo hướng nào nó có thể ảnh hưởng đến nó?
OOP chỉ là một phong cách lập trình. Nó không thể giúp đỡ dưới bất kỳ hình thức nào. Mặt khác, một thuật toán có thể được thực hiện bằng ngôn ngữ OO để làm một cái gì đó cho các đối tượng (như được hiển thị)
Có một số vấn đề chỉ có thể được trình bày và giải quyết bằng OOP?
Tôi không thể nghĩ về một (nhưng điều đó không có nghĩa, đó là điều không thể). Nhưng nếu bạn nhìn nó theo một cách khác: OOP rất hữu ích, nếu bạn muốn mô hình hóa một số vấn đề và giải quyết nó bằng một thuật toán thích hợp. Giả sử bạn có một kỷ lục của friends
bạn có thể mô hình chúng như objects
với properties
và nếu bạn muốn có một list
số friends
được sắp xếp trong bất kỳ cách nào, bạn có thể sử dụng ví dụ mã đưa ra ở trên để làm chính xác điều đó.
Tại sao sách giáo khoa thuật toán được định hướng thủ tục nhiều hơn?
Như đã nói: nó tự nhiên hơn , vì thủ tục là đặc tính của thuật toán.