我在高中、计算机培训机构等地教授C++已经有大约两年了。在教授变量、数组、结构体、函数等基础知识之后,我总是会以传统的例子来开始面向对象的实例部分,比如这个:
class Person {
public:
Person();
~Person();
char* getFirstName(); //we can use std::string instead of char* in optimization part
char* getLastName();
char* getFullName();
int getAge();
bool getGender();
void printFullProfile();
void setFirstName(char*);
void setLastName(char*);
void setAge(unsigned int);
void setGender(bool);
void setGender(char);//f for female, m for male.
private:
char* first_name; //or std::string but i prefer to use pointers in the beginning.
char* last_name;
unsigned int age;
bool gender; //ladies 1(st) , male 0
}
然后完善这个Person类,教授新的知识,例如为什么getter和setter方法是有害的以及通过创建其他类(例如Student、Employee、Moderator等)避免访问器、继承、多态等必要的OOP技能和概念。
[编辑]: 并使这些类对解决编程问题有用。 (如为每个Employee对象计算工资,学生平均分数等)
另一些基本示例是Vehicle类、Shape类等。
我想知道关于如何(只是)开始一个OOP课堂的你的想法。
期待着您的好点子。
std::string
而不是char *
。这将节省您一些时间和烦恼,因为您无需解释内存分配、内存所有权和智能指针等问题。 - Thomas Matthews