1,类之间的基本关系:
1,继承:
1,从已存在类细分出来的类和原类之间具有继承关系(is-a);
1,子类就是一个(is-a)父类;
2,继承是单向的;
2,继承的类(子类)拥有原类(父类)的所有属性和行为;
2,组合:
1,一些类的存在必然依赖于其它的类,这种关系叫组合;
1,同生死,共存亡;
2,组合的类在某一个局部上由其它的类组成;
2,类之间的基本关系:
1,继承:
2,组合:
3,类的表示法(生活中的概念用程序语言表达):
1,原始表达:
1,问题:
1,图的方式编译器读不懂,更改;
2,简化:
1,问题:
1,类之间的继承关系没有表示出来;
2,继承而来的属性和行为需要重复声明;
1,继承从概念上就使得子类拥有父类的一切属性和行为,重复申请没有意义;
3,改进 1:
1,问题:
1,需要使用划线来表示属性和行为,不适合于编程开发;
4,改进 2:
1,问题:
1,使用中文进行属性和行为的描述,绝大多数编译器无法接受;
5,改进 3:
1,思考:
1,如何用程序设计中的概念描述类的属性和行为?
1,变量和函数;
6,改进 4:
4,类的表示法编程实验:
1,main.cpp 文件:
1 #include <stdio.h> 2 3 struct Biology { 4 bool living; 5 }; 6 7 struct Animal : Biology { 8 bool movable; 9 void findFood() { } 10 }; 11 12 struct Plant : Biology { 13 bool growable; 14 }; 15 16 struct Beast : Animal { 17 void sleep() { } 18 }; 19 20 struct Human : Animal { 21 void sleep() { } 22 void work() { } 23 }; 24 25 int main() 26 { 27 return 0; 28 }
2,编译通过;
5,小结:
1,类之间可以存在继承关系或组合关系;
2,继承关系中子类拥有父类的一切属性和行为;
3,组合关系是类之间整体和部分的关系;
4,类及类之间的关系可以有不同的表示法;
5,编译器对类的表示法有具体的要求;