2013-04-04 41 views
7

Tôi đang điều hành một câu lạc bộ lập trình ở trường trung học, và tôi đã giới thiệu học sinh của mình với OOP sử dụng các lớp đơn giản trong C++. Tôi tin rằng ít nhất về lý thuyết họ có được ý tưởng. Tôi muốn có thể cung cấp cho họ một dự án cụ thể mà họ có thể làm việc cùng nhau. Câu hỏi tôi có là phương pháp tiếp cận. Khi tôi học các lớp lập trình ở đại học, tôi thấy hai cách tiếp cận khác nhau, nhưng theo ý kiến ​​của tôi, cả hai đều có những thiếu sót nghiêm trọng. Tôi đã ngủ qua hầu hết trong số họ và tự học những thứ từ sách vở và ví dụ. Bây giờ tôi đang ở trong giày của giáo viên, tôi muốn nhận được ý kiến ​​của bạn về cách tiếp cận nào là thích hợp hơn hoặc nếu có lựa chọn thứ ba.Dạy OOP (C++) cách tiếp cận bên ngoài và bên trong ra ngoài

Phương pháp tiếp cận 1 đã được sử dụng, là viết chương trình trên bảng (hoặc trên máy tính có màn hình chiếu). Các định nghĩa lớp luôn được viết đầu tiên. Thông thường các sinh viên sẽ trông thật hoang mang vào thời điểm này, bởi vì mục đích của các biến và phương pháp có vẻ hoàn toàn mơ hồ đối với họ. Thời gian duy nhất mà họ đã học về những gì mỗi biến và phương pháp được cho và làm thế nào họ tương tác là khi người hướng dẫn cuối cùng sẽ viết việc thực hiện (tôi gọi đây là phương pháp bên ngoài)

Cách tiếp cận 2 là để giải thích những gì chúng tôi đang cố gắng để đạt được, và tạo ra các lớp học và các thành viên khi cần thiết. Điều này có vấn đề ngược lại. Anh ta sẽ viết một phương pháp có thể sử dụng những lớp tưởng tượng này sẽ phải được thực hiện sau này. Nhưng các sinh viên không có ý tưởng làm thế nào các lớp khác sẽ làm việc.

+0

tôi sẽ bắt đầu giảng dạy OOP trong một vài tháng ... Tôi rất quan tâm đến đầu vào tốt cho câu hỏi này :) –

+0

Những thường được gọi là" top Sự đồng thuận hiện tại dường như chạy theo hướng bắt đầu từ * cả * kết thúc và gặp nhau ở giữa, vì vậy để nói (nhưng tôi không nghĩ có bất cứ điều gì tiếp cận hoàn toàn thỏa thuận về một cách đúng đắn để làm việc) –

+0

Tôi sẽ đi cho Phương pháp 3. Xác định các lớp và các phương thức tuôn ra trong lớp dựa trên cách chúng được sử dụng Các lớp cần được định nghĩa đầu tiên vì điều đó sẽ xây dựng khả năng thiết kế OOP của chúng, trong khi xả ra các phương thức như các đối tượng đang được được sử dụng sẽ đảm bảo rằng chỉ có tối thiểu các hàm bắt buộc được định nghĩa trong mỗi lớp và sẽ cung cấp ngữ cảnh về cách mỗi lớp tương tác với nhau. –

Trả lời

6

Khi điều đó xảy ra, tôi đã làm việc theo cách của mình thông qua Đại học bằng cách làm việc như một giáo viên. Tôi bây giờ là kĩ sư phần mềm.

Theo kinh nghiệm của tôi, điều tối quan trọng là các sinh viên phải đầu tư tình cảm vào một dự án lập trình. Tôi sẽ đưa ra câu hỏi của bạn sau một phút, đây là một lời mở đầu cần thiết.

Để đạt được điều đó, tôi đã tạo chủ đề của chương trình thực sự quan tâm đến họ, bất kể nó có vẻ ngớ ngẩn đến mức nào, miễn là nó liên quan đến họ trong thế giới của họ.

Vì vậy, có thể là (tùy thuộc vào tuổi của học sinh) về xếp hạng sao ca hát theo trình độ tài năng của họ, bao gồm Justin Bieber. Bạn có thể tưởng tượng sự náo động ở cái đó.

Giống như, tải lời bài hát của họ và đếm số lần họ nói từ "em bé". Một cái gì đó sáng tạo, một cái gì đó thú vị.

Điều này sẽ khiến câu hỏi "khô" trở nên sống động. Giống như, lớp "ca sĩ" trông như thế nào. Tại sao nên có các thuộc tính như "phạm vi octave" sẽ ngay lập tức trực quan.

Lớp học ca sĩ có phương pháp gọi là 'barfOnStage' không? (The Biebs bị chặn trên sân khấu một thời gian trước). Chắc chắn, tại sao không !? Họ sẽ dễ dàng thấy sự khác biệt giữa các phương thức và thuộc tính.

Ý tôi là, tôi chỉ đang nói lên đỉnh đầu, tôi chắc chắn bạn có thể áp dụng sáng tạo và sáng tạo của riêng mình cho bất kỳ điều gì phù hợp với con bạn.

Tôi rất thích nghe những gì bạn đã đi cùng và cách dự án của trẻ em bật ra.

0

Đối với cấp độ mới bắt đầu, tôi sẽ đi với phương pháp số 2 được sửa đổi nơi bạn bắt đầu với một vấn đề dễ dàng và sau đó xây dựng trên đó. Kinh nghiệm là giáo viên tốt nhất .... như thời gian giáo viên trường trung học của tôi đã cho chúng tôi 'lặp lại' thông qua hai mươi biến rời rạc như một 'danh sách' và sau đó đã dạy chúng tôi về mảng ....

Bạn cần phải chọn vấn đề đúng.Nó cần phải là một vấn đề mà các bài tập 'cơ bắp hướng đối tượng' không phải là 'cơ bắp thuật toán'. Nó cần phải là một cái gì đó mà bạn có thể xây dựng các yêu cầu về nó mà tập thể dục hướng đối tượng. Một chương trình CRUD đơn giản nên đầy đủ. Bạn sẽ chỉ phải hạn chế họ sử dụng các đối tượng và không phải mảng như tôi cho rằng họ sẽ làm việc thoải mái. Tôi sẽ để lại các đặc điểm kỹ thuật chính xác cho bạn.

Đầu tiên, yêu cầu họ viết chương trình chỉ cho phép họ thêm bản ghi vào 'cơ sở dữ liệu'. Chỉ cần bằng cách tạo một 'hàng' trong 'cơ sở dữ liệu' của họ, họ sẽ bị buộc phải học cách tạo một đối tượng và khởi tạo một đối tượng.

Tiếp theo, yêu cầu họ sửa đổi chương trình của họ để hiển thị nội dung của 'cơ sở dữ liệu' của họ. Khi họ đọc 'cơ sở dữ liệu' của họ, họ sẽ thực hiện chức năng .show hoặc tuy nhiên bạn thực hiện khả năng đó.

Thứ ba, yêu cầu họ tạo ra để họ có thể thay đổi nội dung của 'bản ghi'. Việc cập nhật sẽ củng cố cách nói cho một đối tượng sửa đổi chính nó.

Cuối cùng, họ nên sửa đổi chương trình để cho phép xóa 'hồ sơ'. Điều này sẽ củng cố sự phá hủy đối tượng thích hợp.

Lấy nó lên tầm cao mới (và vì đây là C++), bạn có thể:

  • yêu cầu họ thực hiện 'cơ sở dữ liệu' của họ như là một danh sách liên kết

  • viết đặc tả để bạn có thể làm một cái gì đó yêu cầu đối tượng được thêm cùng nhau

  • thêm vào phạm vi dữ liệu để cấu trúc chương trình sẽ tốt hơn tạo điều kiện bởi mẫu hoặc kế thừa (xe 'cơ sở dữ liệu' có cả xe hơi lẫn xe máy chẳng hạn)

Từ kinh nghiệm làm là giáo viên giỏi nhất. Có ai đó chỉ cho tôi cách làm một cái gì đó (hoặc làm nó như là một nhóm trên một bảng) ngắn mạch học tập. Đấu vật với nó và có một số hướng dẫn Socratic dạy một sự hiểu biết sâu sắc hơn và mang lại một bộ não lập trình tốt hơn.

Nếu họ chưa sẵn sàng thực hiện chức năng 'tạo' thì mã hóa nó thành một nhóm trên bảng trắng sẽ hoạt động, nhưng một khi họ có một mẫu về cách mọi thứ phù hợp với nhau, họ cần phải đứng sau máy tính. ngoài.

0

Nếu đó là khóa học lập trình mới bắt đầu, tôi muốn nói khía cạnh OOP là vấn đề nhỏ. Tập trung vào các biểu thức, câu lệnh và luồng điều khiển.

Nếu tiêu điểm ở trên OOP, tôi muốn bắt đầu với lịch sử OOP và tập trung vào OOP. Từ đó người ta có thể nhìn vào cách người ta mô tả các khái niệm này bằng các ngôn ngữ khác nhau. (ví dụ: ADT, Simula, v.v. http://retis.sssup.it/~lipari/courses/oosd2010-1/02.oop.pdf)

... và sau đó thử nghiệm.

"Nếu chúng ta xem toàn bộ lịch sử, chúng ta thấy rằng công cụ proto-OOP bắt đầu với ADT, ..." - Alan Kay (http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/doc_kay_oop_en)

Các vấn đề liên quan