01/10/2018, 16:04
Định nghĩa về tính trừu tượng trong oop?
Em không hiểu về tính trừu tượng của oop. Các anh cho em 1 định nghĩa chuẩn về nó với. Em tìm trên google và đọc thì chưa hiểu rõ lắm và cũng không biết có đúng không???
Bài liên quan
Bạn dùng ngôn ngữ nào? Để mình minh họa cho dễ hiểu, chứ định nghĩa thì tra google mới có định nghĩa chuẩn (cho từng ngôn ngữ) được
Em dùng php. Anh cũng có thể dùng java ạ. và anh cho em cái định nghĩa gọi là khá chuẩn đc không ạ
Trừu tượng có nghĩ là tổng quát hóa một cái gì đó lên. không cần chú ý chi tiết bên trong. nó giống như qui nạp trong văn học ấy -.-
Nó không màng đến chi tiết bên trong là gì và người ta vẫn hiểu nó mỗi khi nghe về nó.
Ở trên đang nói đến sách đấy. Trong lập trình thì nó nói đến hành vi nhiều hơn.
vậy liệu biểu hiện của tính trừu tượng trong oop là gì ạ. Anh cho em xin 1 ví dụ được không?
Java thì ok, mình từng có 1 bài viết trên blog, bạn xem thử xem sao nhé:
https://colourguy.wordpress.com/2018/05/19/tinh-truu-tuong-trong-lap-trinh-huong-doi-tuong/
Đó là giải thích một cách kĩ lưỡng, còn nói đơn giản có thể hiểu như bạn @nguyenhuuca, ví dụ khá vui
Lập trình hướng đối tượng có 2 đặc trưng và 4 tính chất, bất cứ ngôn ngữ nào được thiết kế để lập trình oop thì đều có các khái niệm trên, nên không cần phân biệt ngôn ngữ, nghĩa là k phụ thuộc vào ngôn ngữ, chỉ cần nắm được tư tưởng bên trong, ngôn ngữ chỉ là công cụ
Abstraction (tính trừu tượng hóa): đơn giản là chọn ra các thuộc tính, phương thức của đối tượng cần cho việc giải quyết bài toán đang lập trình. Vì 1 đối tượng có rất nhiều thuộc tính phương thức, nhưng với bài toán cụ thể không nhất thiết phải chọn tất cả
Ví dụ
Tại sao bài toán quản lý sinh viên lại cần
mà lại không cần
Tại vì nó không cần thiết
Hiểu đơn giản vậy thôi, chứ mấy cuốn sách về công nghệ phần mềm cứ viết đúng nghĩa theo kiểu trừU tượng hóa lên, viết là 1 chuyện, nhưng khi làm lại là 1 chuyện, càng đơn giản, càng dễ hiêu thì càng hiệu quả
Chính là bước mà bạn chọn ra thuộc tính và phương thức để thực hiện tính chất che dấu thông tin, đóng gói dữ liệu vào class.
Các tính chất có mối liên hệ với nhau
Hai đặc trưng của lập trình hướng đối tượng
Bốn tính chất của lập trình hướng đối tượng
Mình không hiểu ý bạn?
Ngôn ngữ nào cũng giống nhau cả, đã là oop thì đều có các tính chất và đặc trưng của oop, chỉ có cú pháp của nó , hoặc cách hoạt động của ngôn ngữ khác nhau
Người hỏi là newbie, chỉ nói lý thuyết thì sẽ khó hiểu, bạn ấy cũng tự nhận là đọc rồi mà chưa hiểu lắm, nên mình muốn hỏi bạn ấy gần gũi với ngôn ngữ nào nhất thì mình sẽ có minh họa cho ngôn ngữ đó, và mình có đưa vào bài viết đó.
sau 1 hồi đọc thì em chốt vấn đề thế này đã ổn chưa các huynh đài: tính trừu tượng là tính chất mà ta nhắm đến phần cốt lõi, những gì khái quát nhất của 1 đối tượng để giải quyết bài toán. Em hiểu như vậy đã đúng chưa ạ. Rất mong nhận được sự giúp đỡ của các anh ạ.
Đúng rồi đó, ví dụ chạy xe ôtô có hành động nhấn ga để tăng tốc. thì cái chức năng tăng ga là đại diện cho abstraction, người dùng chỉ cần biết đạp cần là xe tăng tốc, không cần biết bên trong nó làm thế nào. -.-
anh ơi anh có thể nói rõ ví dụ đó đc không ạ. Em vẫn chưa hiểu ví dụ của anh thì tính trừu tượng ở đâu. sr anh vì em hỏi nhiều và ngu . ở định nghĩa trên em vừa nêu thì ý là mình tập trung xây dựng 1 class cốt lõi để cho các lớp con của nó kế thừa và thực hiện theo cách riêng của chúng. Nhưng em chưa hiểu ví dụ của anh là như nào anh giúp em ạ @nguyenhuuca
Em đang tập trung vào cách làm rồi, anh đang tập trung vào định nghĩa
dzone.com
Đọc đây đi
OOP Concept for Beginners: What Is Abstraction? - DZone Java
This primer for the core OOP concept abstraction tackles its basics in both programming and real life as well as tips for implementing it in your code.
Abstraction đấy
Thì đúng vậy OOP cần abstraction, chứ abstraction thì nó ở đâu chẳng được. cơ mà người ta so sánh OOP với functional program, procedural-oriented chứ so sánh với C làm gì bác -.-
vậy nhân tiện về tính đóng gói em hiểu như này đã gọi là chuẩn chưa ạ các anh: Tính đóng gói (encapsulation) “đóng gói” thuộc tính và phương thức của đối tượng (hoặc lớp) thông qua việc giới hạn quyền truy cập (hoặc thay đổi) giá trị của thuộc tính hoặc quyền gọi phương thức. Nói cách khác tính đóng gói cho phép kiểm soát quyền truy cập (và thay đổi) giá trị của thuộc tính hoặc quyền gọi phương thức của đối tượng (hoặc lớp) và đối tượng (hoặc lớp) con.
Những dòng code, nó được viết, được thiết kế để khi nhìn vào đó ta thấy như một thế giới sống. Những object, như những cá thể muôn loài được sinh ra (khởi tạo), chết đi (thu hồi) và tương tác với nhau. Nó “trừu tượng” như vậy.
Những con chó con, mèo con sinh ra, nó mang màu lông giống bố mẹ, hoặc ông bà chúng. Chúng cũng có bản năng săn mồi như cha mẹ chúng. Bởi vì nó được “kế thừa” những cái đó.
Con chó thì sủa gâu gâu, con mèo thì meo meo, con gà cục tác lá chanh. Mặc dù thì chúng đều là động vật cả. Mỗi con mang một hình thái, “đa hình” là như thế thôi.
Con chó kiếm được cục xương, nó đem về nuôi con nó. Ai động vào cục xương của nó xem. Nó cắn bỏ m* Cục xương ấy là tài sản riêng của nó. Chỉ nó mới được xài hoặc con nó- những con chó kế thừa nó mới được xài thôi. Bao đóng hay đóng gói nó là như vậy thôi.