Tiếp sau khóa học C++ cơ bản là khóa học C++ Hướng đối tượng. Mình đã soạn mục lục khóa học ở link này.
Mọi người cho mình xin một số ý kiến về các phần in đậm màu xanh nhé (về độ sâu kiến thức của bài học, vị trí của bài học trong khóa học và đề xuất nội dung cho các bài học). Cảm ơn mọi người rất nhiều.
Xin ý kiến về mục lục khóa học C++ Hướng đối tượng
anh nghỉ bỏ mục
số 3.Ký hiệu UML. UML rất lớn nên mở lớp dạy về UML riêng.
số 4. Kiểu dữ liệu cơ sở và lớp dựng sẵn.
Kiểu dữ liệu cơ sở thì được dạy ở lớp C căn bản rồi, không cần nhắc lại.
còn lớp dựng sẵn thì không biết dùng làm gì vậy
mục 5.5 Ép kiểu (CASTING) không hiểu dùng để làm gì.
HÌnh như bên phần C++ cơ bản đi theo hướng dẫn này, sao phần C++ hướng đối tượng không theo luôn nhỉ http://www.learncpp.com
Có mấy phần như diamond problems, aggregation, composition, virtual table… với lại C++ 11 không được đề cập tới, nếu đi theo trang learncpp sẽ đầy đủ hơn.
Hình như chỉ là class diagram thôi anh, chứ không phải là nguyên về UML đâu .
Phần UML thì có thể bỏ qua, do em tính thêm vào để cung cấp cho các bạn một số kiến thức để đọc hiểu các cấu trúc pattern dùng cho lớp giải thuật.
Phần số 4 nếu đã có rồi thì em sẽ bỏ qua luôn, em sẽ xem lại bên phần c cơ bản.
Phần số 5 để giới thiệu về casting, bản chất của casting
Để em tham khảo lớp learncpp.com em mới tham khảo cuốn ở trường với cuốn c++ programming languages thôi
Còn phần UML chủ yếu là class diagram
Dạy như vậy cách bạn không hiểu mục đích UML làm gì.
Nên anh nghĩ bỏ UML khỏi khóa học về hướng đối tượng.
lớp hướng đối tượng chỉ nên tập trung dạy về hướng đối tượng.
Đừng nên dạy cái khác sẽ làm các bạn rồi.
Như anh nói UML rất lớn do đó nên mở 1 khóa học khác khi các bạn hiểu về hướng đối tượng và qui trình phát triển phần mềm.
À hình như bạn @Rok_Hoang không hiểu rõ về UML nên mới ghi mục lục vậy thôi, theo em thì mục đó ghi là class diagram á, chứ không phải dạy use case, sequence diagram… búa lùa xua đâu. Còn học hdt đương nhiên là phải biết về class diagram rồi.
Đạt không nghĩ là Đạt sẽ dạy UML, có 2 lý do
- Đạt không rành
- Đạt không thích
- XML thiên về phân tích yêu cầu nhiều hơn
- Khóa học này thiên về code nhiều hơn
Ok, đã sửa Mọi người góp ý tiếp nhé.
Để tối chuyển qua markdown cho đống này.
mình hóng luôn, cảm ơn bạn nhiều nha
phần 6 nên đặt lên đầu tiên hoặc số 2. Thêm cái composition/aggregation vào nữa. Cái nhập xuất chả quan trọng gì mấy. Phần đa hình nếu giải thích được vtable thì quá tốt. Phần kế thừa cần giải thích ép kiểu ở đây: downcasting và upcasting, các kiểu casting của C++ là dynamic cast và static cast có gì khác nhau ở đây.
- encapsulation: đóng gói dữ liệu và phương thức với vào 1 cái hộp. Che đậy đủ thứ lên nữa (private - public). So sánh C++ struct và C struct.
- composition: cái này là tự nhiên: bỏ 1 object của class này vào class khác.
- inheritance: giải thích khác với composition chỗ nào, khi nào thì dùng kế thừa, ép kiểu giữa base class và derived classes. Đa kế thừa trong C++ và ưu/nhược điểm, tại sao Java lại ko cho đa kế thừa mà phải sử dụng interface.
- polymorphism: ca này khó giải thích override là gì. Từ khóa virtual là gì, nếu được thì giải thích vtable ở đây. Pure virtual là gì. Abstract class là gì. Tại sao đa hình/kế thừa phải có virtual destructor.
với lại có nói new và delete thì nên có thêm unique_ptr và shared_ptr nữa. Bây giờ xu hướng là hạn chế xài new và delete rồi.
phần 4 kiểu dữ liệu nguyên thủy cho vào hướng đối tượng thì thấy hơi gượng ép quá
STL container thì nếu cơ bản là phải có string, vector, list, deque, set, map. Còn bàn tới STL algo thì sort, find, find_if, count, count_if, swap, copy, reverse, transform, lower/upper_bound, shuffle, min, max, v.v… 1 chương sợ cũng chưa đủ đâu
Ở phần C++ basis mình làm có nói về việc quản lý mã nguồn trên nhiều file trong 1 project nhưng chưa có làm việc với class. Mình nghĩ bên phần hướng đối tượng cũng nên có 1 bài về tổ chức project. Như thế khi qua làm Qt sẽ dễ hơn.
Cái này phải để anh @ltd xử lý chứ mình cũng chưa rõ
Em hồi đó học Qt cũng hay bị báo lỗi vtable này lắm a @ltd
nếu được thì phải giải thích RAII nữa. Lúc giới thiệu ctor và dtor thì giới thiệu luôn RAII này. Khác biệt của nó với GC.
ngoài ra còn phải bàn tới rule of three khi xây dựng class nữa. Rồi rule of five/zero
nhiều lắm, muốn viết đầy đủ ngóc ngách ko phải đơn giản đâu
Wow, nhiều thứ quá, Đạt sẽ không thể cover hết tất cả mọi thứ trong khóa học này.
Anh sẽ giải thích vtable, cái này Đạt nhớ trong videos C++ cũ Đạt có nói tới rồi, nhưng mà chất lượng videos cũ rất tệ nên chắc chắn là phải làm lại
Nên nhớ khóa học này là C++ dành cho người mới học lập trình chứ không phải là C++ dành cho người đã biết lập trình từ ngôn ngữ khác.
Mục tiêu của Đạt là dẫn dắt một người không biết hoặc biết một ít về lập trình hứng thú với lập trình, chứ không phải là một rừng kiến thức để họ sợ và bỏ lập trình.
Đạt sẽ review lại mục lục và xác định xem sẽ dạy cái gì.
Cho em hỏi thêm là đến đầu tháng 7 là có đủ số bài học hay là mới bắt đầu vào làm vậy ạ?
Plan là vào đầu tháng 7 sẽ có đủ bài học cho khóa học C++ cơ bản.
hồi h anh có khóa dạy gì chưa.
Đạt có dạy C/C++ và Python
Cho e hoi khoa c++ co ban la playlist cu cua a Dat tren youtube dug k?