30/09/2018, 21:16

Anh chị cho em hỏi về Lập trình Hướng Đối tượng

Chao anh chị. hôm nay em có 1 câu hỏi mong anh chị giải thích hộ, mà mãi em ko hiểu dc.đó là Lập trình Hướng Đối Tượng, em Không hiểu tại sao Mình cần Phải học Nó,củng Như làm bài tập nhiều về nó. và Ý nghĩa của nó với Công Việc Làm Game, Làm ứng dụng, hay là ứng dụng thực tế, Em thấy ai củng Bảo Muốn làm Game, làm ứng dụng…thì đều phải học qua lập trình hướng đối tượng, có đúng như vậy không . Cho em 1 ví dụ cơ bản để em hiểu rỏ nó hơn dc không ạ.em đọc khái niệm nó trừu tượng quá, ko sát với thực tế, mong anh chị giải thích hộ em.

Ngô Doãn Tuấn viết 23:17 ngày 30/09/2018

Học nó đi rồi sẽ hiểu tại sao phải dùng.
Chứ có 100 người nói cho bạn lý do nhưng bạn không nghe, không muốn học thì cũng như nhau ấy mà.
Quan trọng ở đây là do bản thân bạn ngại học nó, cố tìm ra lý do để học hoặc bỏ thì …

Bùi Trung Thông viết 23:22 ngày 30/09/2018

vì gần như hiện giờ các ngôn ngữ phổ thông đều là hướng đối tượng cả (c#,Java…), và cho tới thời điểm hiện tại có thể nói chưa có phương pháp mới nào đủ mạnh để thay thế được hướng đối tượng cả. Khi em đi làm thì cũng trên cơ sở là hướng đối tượng cả, dù game, hay ứng dụng, web,v.v… Tạm thời em biết như vậy đi, cứ chăm chú học vào OOP là ok.

bau nguyen viết 23:30 ngày 30/09/2018

theo mình hiểu là như thế này:
cấu trúc dữ liệu + giải thuật = chương trình
hay nói cách khác - để viết chương trình (ứng dụng hay game) bạn đều fai thiết kế thuật toán và cấu trúc dữ liệu cho nó.
Vì sao mà bạn phải học lập trình hướng đối tương? --> để bạn viết chương trình dễ hơn và hiệu quả hơn. Lập trình hướng đối tượng (c++,java,c#) giúp bạn biểu diễn dữ liệu tốt hơn và dễ dàng hơn nhiều so với lập trình cấu trúc© hay tuyến tinh(assembly).
Nhưng đấy là bạn theo lập trình game, app. Còn nếu bạn theo lập trình hệ thống hay nhúng thì mình nghĩ hương đối tượng như java, c# lại ít dùng vì hiệu năng nó ko tốt bằng bọ kia :).
hi. có gì sai mong ace chỉ giáo

toiyeu123 viết 23:22 ngày 30/09/2018

dạ vâng. học thì phải học thôi ạ. vì cái gì đưa ra dạy, chắc chắn nó phải có ý nghĩa của nó rồi. nhưng mà ý em,muốn hiểu sâu về ý nghĩa của nó chút thôi, nếu dùng nó thì lợi ích thế nào, còn không lập trình hướng đối tượng thì chương trình nó như thế nào thôi ạ

toiyeu123 viết 23:16 ngày 30/09/2018

Học nhửng ngôn ngữ c++.c#, Java, chắc chắn phải học Hướng Đối tượng hả anh. Nếu Không học nó có vấn đề gì không anh.

bau nguyen viết 23:27 ngày 30/09/2018

Học nhửng ngôn ngữ c++.c#, Java, chắc chắn phải học Hướng Đối tượng hả anh. Nếu Không học nó có vấn đề gì không anh.

Mình nghĩ.
Đi học thì bạn sẽ được dạy tổng quan để bạn có thể định hướng ngành nghề của bạn:
Còn bạn học đc nhiều bao nhiêu thì tốt bấy nhiêu.
Nếu bạn định hướng theo lập trình game, app, hay android thì hướng đối tượng như java, c#,… thì bắt buộc bạn học thì bạn mới làm việc đc.
Còn bạn định hướng chỉ lập trình hệ thống chẳng hạn thì bạn cũng ko cần học mấy cái đó mà chỉ cần c cũng làm việc đc.
Mình cũng đang đi học nên nghĩ học đc càng nhiều ngôn ngữ càng tốt những cứ chắc 1-2 cái trc đã

toiyeu123 viết 23:26 ngày 30/09/2018

vâng, em củng đang học năm nhất định hướng để mà học anh à.vì thời gian thì có nhiều mà chơi hết ko làm dc việc gì, học c++ cơ bản em củng có thể tự suy nghĩ và làm dc bài tập rồi,muốn đổi không khí và nâng cao kĩ năng. biết đâu, làm dc app,game sớm củng nên. hihi.nhưng mà mỗi cái hướng đối tượng ko biết làm j nên hỏi anh chị, để mà học, sớm làm dc ứng dụng thực tế cho mình

bau nguyen viết 23:22 ngày 30/09/2018

nhưng mà ý em,muốn hiểu sâu về ý nghĩa của nó chút thôi, nếu dùng nó thì lợi ích thế nào, còn không lập trình hướng đối tượng thì chương trình nó như thế nào thôi ạ

mình có thể vd thế này. bạn so sánh giữa 2 hđh android và ios.
ios (viết bàng object C ,switt)
android (viết bằng java)
tại sao iphone ram 1g chạy vẫn mượt hơn android chạy ram 2g.
Tại sao các hệ điểu hành chỉ viết bằng ngôn ngữ assembly hay C mà không viết bằng java,c# mặc dù java,c#,… có rất nhiều ưu điểm như thế

toiyeu123 viết 23:26 ngày 30/09/2018

em hiểu. lập trình hướng đối tượng 1 phần củng giúp cho nhửng ứng dụng mình viết nó chạy mượt hơn.em sẻ tìm hiểu ý nghĩa của nó nhiều hơn. em cảm ơn

Người bí ẩn viết 23:18 ngày 30/09/2018

Cứ hiểu đơn giản là có 3 thời đại công nghệ:
Thời đại 1: Lập trình trong 1 hàm duy nhất là hàm Main
Thời đại 2: Lập trình thủ tục - hàm : tức là code trong nhiều hàm con ngoài hàm main
Thời đại 3: Lập trình hướng đối tượng (gồm các khái niệm Class, Object, Đa hình, Kế thừa, …)

Muốn học được thời đại 3 thì phải biết thời đại 1 và 2.

Tom Nguyen viết 23:22 ngày 30/09/2018

Ơ cái này code dần dần mới hiểu, không nên nóng vội.

Trước tiên bạn cần hiểu rõ 4 tính chất cơ bản của OOP , sau đó thì làm ví dụ về nó

vi.wikipedia.org

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

Lập trình hướng đối tượng (tiếng Anh: Object-oriented programming, viết tắt: OOP) là một mẫu hình lập trình dựa trên khái niệm "công nghệ đối tượng", mà trong đó, đối tượng chứa đựng các dữ liệu, trên các trường, thường được gọi là các thuộc tính; và mã nguồn, được tổ chức thành các phương thức. Phương thức giúp cho đối tượng có thể truy xuất và hiệu chỉnh các trường dữ liệu của đối tượng khác, mà đối tượng hiện tại có tương tác (đối tượng được hỗ trợ các phương thức "this" hoặc "self"). Trong lậ...

Để dễ hiểu 4 tính chất trên bạn cần tìm hiểu để phân biệt

  • Class vs. Object vs. Instance
  • Interface vs. Abstract Class vs. Concrete Class
  • static method/variable vs non-static method/variable

Tại sao OOP lại phổ biến như hiện nay vì khi app trở lên phức tạp và lớn, OOP quản lý rất rõ ràng , mạch lạc, dễ mở rộng(inheritance), sửa chữa(encapsulation)

bau nguyen viết 23:21 ngày 30/09/2018

Cứ hiểu đơn giản là có 3 thời đại công nghệ:Thời đại 1: Lập trình trong 1 hàm duy nhất là hàm MainThời đại 2: Lập trình thủ tục - hàm : tức là code trong nhiều hàm con ngoài hàm mainThời đại 3: Lập trình hướng đối tượng (gồm các khái niệm Class, Object, Đa hình, Kế thừa, …)

có 4th rồi bác ơi. SQL nhé

Vu Van Chung viết 23:18 ngày 30/09/2018

Như bạn nào nói chương trình = cấu trúc dữ liệu + giải thuật là sai nhé. Cái định nghĩa đó là chỉ trong chương trình cấu trúc thôi. Còn lập trình hướng đối tượng thì chương trình = đối tượng + thông điệp (objects + messages = Program). Và cái bạn nào nói muốn học thời đại 3 phải học thời đại 1,2 cũng sai. Bởi vì hướng đối tượng với hướng cấu trúc là 2 hướng khác nhau, nên học cái kia chỉ có tác dụng làm quen hơn đến khi học cái khác thì sẽ tiếp thu nhanh hơn thôi. Còn tại sao phải học hướng đối tượng, theo mình nghĩ ưu điểm nhất của nó là tính tái sử dụng mã nguồn, tại sao thì bạn phải làm nhiều mới biết được. Vả lại hướng đối tượng thì nó gần gũi với cuộc sống thực nên rất dễ hình dung. Ví dụ con người có các đặc trưng: tên, tuổi, nghề nghiệp, … thì vào chương trình viết cũng y như vậy luôn. Do tính mạch lạc của nó, quy về đối tượng hết nên khi đối tượng này hỏng thì chỉ việc sửa trong chính đối tượng đó thôi, nó đơn giản hơn nhiều so với việc sửa cả một cục rất khó! Theo như mình học thì học liên tục vài ba tháng ngày nào cũng làm bài tập thì mới hiểu được sơ sơ nó là cái gì!

X viết 23:24 ngày 30/09/2018

Hiểu đơn giản lập trình hướng đối tượng tức là đưa những đối tượng ngoài thế giới thực và mô tả nó trong máy tính bằng ngôn ngữ lập trình. Vd những đối tượng xung quanh ta như nhà cửa, con vật, xe cộ…

Ta không thể nhét nguyên một con người vào trong máy tính mà sẽ biểu diễn bằng code. Các đặc điểm như màu da, chiều cao, cân nặng sẽ được mô tả bằng các thuộc tính (Attributes), các hành động như chạy, nhảy, la, hét thì được mô tả bằng các phương thức (method/operation).

Bạn thấy trong game là sẽ thường hóa thân các nhân vật, con vật các thứ, lập trính app các kiểu cũng liên quan đến bên ngoài thế giới thực nên tóm lại là sẽ phải có liên quan đến LTHĐT

bau nguyen viết 23:21 ngày 30/09/2018

Như bạn nào nói chương trình = cấu trúc dữ liệu + giải thuật là sai nhé. Cái định nghĩa đó là chỉ trong chương trình cấu trúc thôi. Còn lập trình hướng đối tượng thì chương trình = đối tượng + thông điệp (objects + messages = Program).

em không hiểu bác nghĩ thế nào.
nhưng cái : chương trinh = ctdl + giải thuật
chương trình = đối tượng + thông điệp
bản chất nó như nhau.
đúng là khi bác học lên hướng đối tượng thì sẽ đc viết là chương trình = đt + thông điệp.
nhưng cái ctdl và đối tượng theo bác nó khác nhau ở chỗ nào. Nó cũng chỉ là cách biểu diễn dữ liệu . Còn giải thuật với thông điệp nó khác nhau ở chỗ nào? chẳng phải đều nói cách xây duwg thuật toán để cho ra kết quả?
Khác nhau là ở chỗ đối tượng cho phép biểu diễn dễ dàng hơn, chỉnh sửa cũng dễ dàng hơn thôi. Đối tượng chỉ là cách gọi khác của cấu trúc dữ liệu (có thể nói là hiện đại hơn) thôi. bác nói sai là sai ở chỗ nào chứ?

Vu Van Chung viết 23:30 ngày 30/09/2018

@baudiachatb
Bạn nói thế là sai hoàn toàn nhé. Bản chất nó khác nhau một trời một vực, hai tư duy hoàn toàn khác nhau. Một bên lấy hành động và tổ chức dữ liệu làm trọng tâm, tập trung toàn bộ vào các hàm xử lí, một bên lấy đối tượng làm trọng tâm, tập trung toàn bộ vào các đối tượng và cách chúng tương tác với nhau. giải thuật là một bộ các quy tắc hay quy trình cụ thể nhằm giải quyết một vấn đề trong một số bước hữu hạn, hoặc nhằm cung cấp một kết quả từ một tập hợp của các dữ kiện đưa vào, còn thông điệp là sự tương tác giữa 2 đối tượng, gửi thông điệp và nhận thông điệp. Bạn thử nói xem nó giống nhau được chỗ nào không? Một cái tiếp cận bài toán theo hướng top-down, một các là bottom-up. Cấu trúc dữ liệu là cách biểu diễn các dữ liệu theo một cấu trúc nào đó, còn đối tượng nó là một thực thể, có cả thuộc tính và hành vi của nó? sao mà đồng nhất được? Quan điểm của bạn mình phản đối hoàn toàn. Không phải là mình nghĩ mà nó là như thế!

bau nguyen viết 23:19 ngày 30/09/2018

em chỉ thấy. đối tượng (class) nó chỉ là phương thức biểu diễn có thể bao gồm cả dữ liệu và các hàm thành viên. còn bác nói thông điệp là sự tương tác giữa hai đối tượng la đúng. Nhưng điều em muốn nói ở đầy là bản chất của một phần mềm đều dựa trên cách xậy dựng dữ liệu và thuất toán để nó cho ra kết quả. Cón cách thức thực hiện ở mỗi ngôn ngữ là khác nhau. Nếu nói khác thì phải nói ở ngôn ngữ phi thủ tục SQL kìa.

Vu Van Chung viết 23:32 ngày 30/09/2018

Bạn nói thế thì mình cũng chịu rồi! Hi, sao cũng được, miễn làm được là được mà nhỉ?

bau nguyen viết 23:21 ngày 30/09/2018

Bạn nói thế thì mình cũng chịu rồi! Hi, sao cũng được, miễn làm được là được mà nhỉ?

anh em thảo luận trong đây đều với mục đích hiểu thêm và tăng exp bản thân thôi mà bác .

Quân viết 23:23 ngày 30/09/2018

đồng ý với bạn ở điểm này, các đối tượng liên hệ với nhau dựa vào thông điệp, còn bản thân đối tượng phản ứng thế nào thì sẽ do đối tượng đó tự quyết định. Nó là sự tương tác nội tại và môi trường chứ không phải là 1 bộ các quy tắc có trình tự

Bài liên quan
0