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%.

1 Like

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

1 Like

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 :grin:

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ỹ

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

1 Like

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

2 Likes

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ú! :grin:

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

cũng UETer …

1 Like

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 :))

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

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

1 Like

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 -|

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.

3 Likes

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

Programming Foundations with Python

Intro to Java Programming

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 :smile:

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.

1 Like

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

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
1 Like

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

1 Like

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ỉ ?

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

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?