30/09/2018, 18:17

Bế tắc khi tự học lập trình OOP java

Em đã làm được một số bài cơ bản về đối tượng và lớp nhưng đến phần kế thừa và đa hình em không hiểu cái gì cả ví dụ như phương thức equals , toString, hay từ khoá super, abstract class, contructor có tham số… thấy code mẫu người ta dùng thì dùng theo chứ không hiểu được nguyên lý hoạt động ra sao. Em cũng đã xem video hướng dẫn của StudyAndShre cũng hiểu theo kiểu lý thuyết nhưng khi bắt tay vào làm thì không biết bắt đầu từ đâu.

ví dụ bài tập này:
Hàng hóa quản lý trong kho của một siêu thị gồm có hàng thực phẩm, hàng sành sứ và hàng điện
máy.
Mỗi loại hàng đều có mã hàng (không được sửa, không được để trống), tên hàng (không được rỗng), số
lượng tồn (>=0), đơn giá (>0).
Hàng thực phẩm thì cần quan tâm đến thông tin ngày sản xuất, ngày hết hạn (ngày hết hạn phải sau hoặc
là ngày sản xuất) và nhà cung cấp.
Hàng điện máy cần biết thời gian bảo hành bao nhiêu tháng (>=0), công suất bao nhiêu KW (>0).
Hàng sành sứ thì cần biết thông tin về nhà sản xuất và ngày nhập kho.
Ngoài ra, người quản lý cần quan tâm đến số lượng tồn kho và các yếu tố khác của từng loại hàng hóa
để đánh giá mức độ bán buôn, tiền VAT từng loại hàng hóa. Biết rằng VAT của hàng điện máy và sành
sứ là 10%, VAT của hàng thực phẩm là 5%.

Truong Pham viết 20:19 ngày 30/09/2018

đọc sách có lẽ sẽ giúp ích hơn

Interns viết 20:30 ngày 30/09/2018

sách nó nói chung chung quá. Bạn có cuốn nào có bài tập thực tế đơn giản dễ hiểu cho mình xin với

Truong Pham viết 20:30 ngày 30/09/2018

sách nói rất kỹ và làm theo ví dụ của nó nữa ấy. trước mình cũng chỉ thích làm bào tập nên nhiều cái không hiểu kỹ

X viết 20:27 ngày 30/09/2018

sách nó nói chung chung quá

Cái này chắc là đọc vài trang rồi bỏ ngang

Nguyễn Hồng Sơn viết 20:27 ngày 30/09/2018

Sách nói rất kỹ rồi. Đọc tài liệu ở đây đi
http://bluebee-uet.com/listOfSubject/subject/7/lap-trinh-huong-doi-tuong

Interns viết 20:31 ngày 30/09/2018

cảm ơn @nhs3108 nhe! sách rất cụ thể và chi tiết. mình đọc được gần 1/2 rồi, đọc tới đâu thấm tới đó cảm giác thật thích thú!

Điệp viết 20:29 ngày 30/09/2018

á á. UETer nằm vùng bên này hả bác

Truong Pham viết 20:26 ngày 30/09/2018

cũng UETer …

Điệp viết 20:20 ngày 30/09/2018

không biết vị huynh đài này cao danh quý tánh là gì, hiện biên chế lớp nào :))

Truong Pham viết 20:28 ngày 30/09/2018

Em k59CD. nói chuyện đây không tiện có skype không anh em đàm đạo

binh viết 20:28 ngày 30/09/2018

sách này cũng khá hay
JAVA How to program

GodOfGod viết 20:22 ngày 30/09/2018

Effective Java. Sách này chưa đọc nhưng đang đọc C# in depth thấy hay nói về sách này -|

Trung Thảo viết 20:32 ngày 30/09/2018

Nếu bạn muốn 1 cuốn sách tiếng việt, mình thấy cuốn này khá hay, trường mình đang dùng cuốn này.

uet.vnu.edu.vn

OOP_2013.pdf

6.33 MB

Nguyễn Thanh Tùng viết 20:19 ngày 30/09/2018

Xin lỗi là ngay khi gõ câu trả lời này thì mình chưa hề đọc hết câu hỏi của bạn (mới đoạn đầu thôi). Nhưng mình nghĩ cách học của bạn có vẻ không hiệu quả, và bạn cũng chưa nắm bắt được những thứ cơ bản của OOP. Bạn có thể đổi cách học hiện tại của bạn bằng cách theo các khóa học sau của Udacity, nó sẽ bổ trợ cho bạn rất nhiều.

Intro to Computer Science

udacity.com

Intro to Computer Science | Udacity

Learn key computer science concepts in this introductory Python course. You'll learn by doing, and will build your own search engine and social network.

Programming Foundations with Python

udacity.com

Programming Foundations with Python | Udacity

Introductory programming class to learn Object-Oriented Programming, a must-have technique to reuse and share code easily. Learn by making projects that spread happiness!

Intro to Java Programming

udacity.com

Java Programming Basics | Udacity

Take your first steps towards becoming a Java developer! Learn Java syntax and create conditional statements, loops, and functions.

Java chỉ là một dạng ngôn ngữ lập trình thôi, còn nhiều ngôn ngữ khác, tất nhiên ta không thể ôm và nắm vững hết được nhưng mình nghĩ nếu bạn mới bắt đầu thì nên học thêm 1 chút Python. Cái bạn cần học và nắm rõ là cách tư duy lập trình, kiến thức về cơ chế hoạt động của máy vi tính / phần mềm, thuật toán / cấu trúc dữ liệu, bla bla bô lô. Mình bắt đầu chả hiểu mình đang nói gì nữa, thôi thì bạn có khả năng hãy chiến hết 3 khóa học ở trên đi nhé (được sắp xếp theo tuần tự của chủ đề Software Engineering trên Udacity).

Còn về sách thì với người mới như bạn, mình khuyên bạn nên đọc sách dưới đây. Nó cung cấp nhiều kiến thức mà trong bài giảng có thể không có, chuyên sâu hơn 1 tí và được viết rất hóm hỉnh

amazon.com

Head First Java, 2nd Edition

Kathy Sierra, Bert Bates

Learning a complex new language is no easy task especially when it s an object-oriented computer programming language like Java. You might think the problem is your brain. It seems to have a mind of i ...

4.2 out of 5 stars, ISBN: 978-0596009205, O'Reilly Media, February 19, 2005, $33.23

Nếu Tiếng Anh của bạn không đủ để hiểu được những tài liệu học tập ở trên, thiết nghĩ bạn nên dừng hẳn luôn việc học lập trình và tập trung vào học Tiếng Anh cho tốt trước đã (ít ra thì phải ở mức đọc hiểu trở lên). Mình không biết môi trường học tập của bạn ra sao, nhưng trước hết hãy bỏ những suy nghĩ “ngây thơ” ra và ghi nhớ đã học hay làm lập trình thì bạn cần phải có một số vốn Tiếng Anh nhất định (đủ để đọc hiểu docs, đặc tả kỹ thuật, báo lỗi, viết comment). Hơn hết, tài liệu học tập Tiếng Anh cũng có chất lượng cao hơn và tốc độ cập nhật nhanh hơn bất kỳ bản dịch Tiếng Việt nào.

Giang Nguyen viết 20:18 ngày 30/09/2018

Nếu bạn mới code OOP và chưa hiểu thế nào là đối tượng thì có lẽ bạn nên quay lại học từ đầu thay vì đọc code ở trên magj vì bạn có đọc nhiều đi nữa cũng không thể nắm bắt đc ý tưởng của ng viết code. Mình thấy thiếu sót khủng khiếp của các website dạy lập trình đó là không dạy cho ng học biết thế nào là đối tượng mà chỉ dạy cú pháp.
Cái sách head first của bạn trên share cũng khá hay đấy, share cho bạn free mà về đọc dần này: http://1drv.ms/1L5v85i

Giang Nguyen viết 20:34 ngày 30/09/2018

Với 1 bài toán giải quyết bằng OOP và cho sẵn đề bài nhưu bạn đưa ra, bạn nên làm như sau:

  • Tìm tất cả các danh từ, nó sẽ là các đối tượng và thuộc tính của nó, bạn sẽ phải xem cái nào chứa cái nào để lập các class, interface và implements hay extends cho hợp lý
  • Tìm các tính từ, nó sẽ là thuộc tính hoặc field của đối tượng, nên xem xét để nó là static hay không
  • Tìm các động từ, nó sẽ là phương thức mà các đối tượng có

Giải quyết bài toán ví dụ của bạn:

  • Tất tật hàng hóa đều phải có các thuộc tính mã, tên, sl, giá => Bạn làm 1 interface hàng hóa chứa các thuộc tính trên (còn mấy cái kiểm tra thì dễ r, k bàn)
  • Hàng hóa chia ba loại: thực phẩm, điện máy, sành sứ => 3 class này implements interface hàng hóa và có thêm các prop và field như yêu cầu của từng loại
  • VAT của mỗi loại hàng háo sẽ là 1 field static trong class
  • Tồn kho không nên để static để có thể biết SL từng mặt hàng (object)
    => Khi thêm hàng thì chỉ cần instance object từ các class tương ứng
Huy Thọ viết 20:32 ngày 30/09/2018

java nó khi nào cũng trừu tượng thế đó bạn ạ…cố gắng làm nhìu ắt quen thui à

Hnib viết 20:30 ngày 30/09/2018

Tất tật hàng hóa đều phải có các thuộc tính mã, tên, sl, giá => Bạn
làm 1 interface hàng hóa chứa các thuộc tính trên (còn mấy cái kiểm tra
thì dễ r, k bàn)

Sao lại là interface nhỉ ? Interface chỉ chứa các field là hằng số thôi. Chỗ này phải tạo một abstract class mới đúng chứ nhỉ ?

Giang Nguyen viết 20:32 ngày 30/09/2018

Uhm, tại mình quen C# rồi nên cứ interface là chỉ có nhồi prop và method thôi

Bạn đã nắm được về OOP chưa? Trả tiền 4 cốc Matcha Cookie cho mình, mình sẽ dạy bạn về OOP trong Java… Giáo trình bốn buổi mỗi buổi nửa tiếng. Học được vào buổi tối thứ hai, tư, sáu tại Hà Nội. Địa điểm là quán coffee nào có wifi tại Cầu Giấy. Nếu bạn không có phương tiện đi lại thì ít nhất cũng là trong nội thành Hà Nội.

Bài liên quan
0