第6章整理ppt.ppt
第6章整理ppt Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望目标面向对象编程OOP编程的相关技术OOP的特征:封装、继承和多态 接口对象型号价格里程起动停车行驶车轮数量档的数量加速换档刹车名称颜色品种摇尾巴吃东西犬 吠 属性行为属性行为属性行为类类是一组具有相同数据结构和相同操作的对象的集合。类类是一组具有相同数据结构和相同操作的对象的集合。类是对一系列具有相同性质的对象的抽象,是对对象共同特是对一系列具有相同性质的对象的抽象,是对对象共同特征的描述。征的描述。语法:访问修饰符 class /类的主体示例:class Employee /类的主体/成员变量/成员方法例如:张三是一个某公司员工对象的话,这个例如:张三是一个某公司员工对象的话,这个公司所有的员工可以作为一个模板,我们就定公司所有的员工可以作为一个模板,我们就定义员工这个类。义员工这个类。对象和类之间 对象对象可以是现实生活中的一个物理对象,还可以是某一类概念实体的可以是现实生活中的一个物理对象,还可以是某一类概念实体的实例。例如:一辆汽车、一个人、一本书,乃至一种语言、一个图形、实例。例如:一辆汽车、一个人、一本书,乃至一种语言、一个图形、一种管理方式,都可以作为一个对象。一种管理方式,都可以作为一个对象。类类是一组具有相同数据结构和相同操作的对象的集合。类是对一系列是一组具有相同数据结构和相同操作的对象的集合。类是对一系列具有相同性质的对象的抽象,是对对象共同特征的描述。比如每一辆具有相同性质的对象的抽象,是对对象共同特征的描述。比如每一辆汽车是一个对象的话,所有的汽车可以作为一个模板,我们就定义汽汽车是一个对象的话,所有的汽车可以作为一个模板,我们就定义汽车这个类。车这个类。可以使用类的定义实例化对象,这表示创建该类的一个实例。可以使用类的定义实例化对象,这表示创建该类的一个实例。从类定义中产生对象,必须有建立实例的操作。从类定义中产生对象,必须有建立实例的操作。“类”和“对象”常常混淆,所以从一开始就正确区分它们是非常重要 语法:语法:成员变量访问修饰符访问修饰符数据类型数据类型成员变量成员变量;privateprotectedinternalpublic_namestatus.userNameintchar.bool class Employee public string _name;private char _gender;private string _qual;private uint _salary;访问成员变量步骤 1:创建一个类的对象Employee objEmployee=new Employee();步骤 2:使用点号访问成员变量objEmployee._name=“张三;objEmployee._name=M;OOP之封装性封装性是OOP编程的重要特征。将类进行了封装,对外提供可访问的属性和方法。外部对象必须通过这些属性和方法访问此对象的信息。封装性最主要是访问修饰词来控制访问修饰符 2-1Teacher 类private 成员protected 成员public 成员internal 成员Student 类不可访问不可访问可以访问只有 Student 类在 Teacher 类都在同一程序集中,才可访问internal成员访问修饰符 2-2修修修修饰饰饰饰符符符符说说说说明明明明publicpublic所属所属类类的成的成员员以及非所属以及非所属类类的成的成员员都可以都可以访问访问internalinternal当前程序集可以当前程序集可以访问访问privateprivate只有只有所属所属类类的成的成员员才能才能访问访问protectedprotected所属所属类类或派生自所属或派生自所属类类的的类类型可以型可以访问访问对象的生命周期每个对象都有一个明确定义的生命周期,除了“正在使用”的正常状态之外,还有两个重要的阶段:构造阶段析构阶段类定义示例2-1public class Employeepublic class Employee/雇员类雇员类雇员类雇员类 private BitArray eflags=new BitArray(3);/private BitArray eflags=new BitArray(3);/私有字段私有字段私有字段私有字段 private string propName;private string propName;/私有字段私有字段私有字段私有字段 public Employee(string empName)public Employee(string empName)/构造函数构造函数构造函数构造函数 propName=empName;propName=empName;eflags.SetAll(true);eflags.SetAll(true);public Employee(string empName,bool profitSharing,bool public Employee(string empName,bool profitSharing,bool healthPlan,bool creditUnion)healthPlan,bool creditUnion)propName=empName;propName=empName;InProfitSharing=profitSharing;InProfitSharing=profitSharing;InHealthPlan=healthPlan;InHealthPlan=healthPlan;InCreditUnion=creditUnion;InCreditUnion=creditUnion;public string Name public string Name/属性属性属性属性 get get return propName;return propName;public bool InProfitSharing public bool InProfitSharing /属性属性属性属性类定义示例2-2 set set eflags.Set(0,value);eflags.Set(0,value);get get return eflags.Get(0);return eflags.Get(0);public bool InHealthPlan public bool InHealthPlan /属性属性属性属性 setset eflags.Set(1,value);eflags.Set(1,value);get get return eflags.Get(1);return eflags.Get(1);public bool InCreditUnion public bool InCreditUnion /属性属性属性属性 set set eflags.Set(2,value);eflags.Set(2,value);get get return eflags.Get(2);return eflags.Get(2);对象创建Employee emp_tom=new Employee(Tom);Employee emp_tom=new Employee(Tom);Employee emp_jerry=new Employee(Jerry,Employee emp_jerry=new Employee(Jerry,true,false,true);true,false,true);OOP之继承继承是OOP最重要的特征之一 任何类都可以从另一个类中继承,这就是说,这个类拥有它被继承的类的所有成员。在OOP中,被继承(也称为派生)的类称为父类(也称为基类)。继承可以从一个较一般的基类扩展或创建更多的特定类。继承是软件重用的一种形式 类继承结构图CommunityMemberEmployeeStudentAlumnusFacultyStaffTeacherAdministrator一学校相关人员的类继承结构图一学校相关人员的类继承结构图OOP之多态性 继承的一个结果是派生于基类的类在方法和属性上有一定的重叠,因此,可以继承的一个结果是派生于基类的类在方法和属性上有一定的重叠,因此,可以使用相同的语法处理从同一个基类实例化的对象。使用相同的语法处理从同一个基类实例化的对象。例:例:Cow myCow=new Cow();Cow myCow=new Cow();Chicken myChicken=new Chicken();Chicken myChicken=new Chicken();myCow.EatFood();myCow.EatFood();myChicken.EatFood();myChicken.EatFood();多态性则更推进了一步,可以把某个基本类型的变量赋予其派生类性的变量。多态性则更推进了一步,可以把某个基本类型的变量赋予其派生类性的变量。例如:例如:Animal myAnimal=myCow;Animal myAnimal=myCow;myAnimal.EatFood();myAnimal.EatFood();/未执行基类未执行基类AnimalAnimal中的中的EatFoodEatFood方法方法,而执行了派生类而执行了派生类CowCow中的方法中的方法EatFoodEatFood多态性应用提示在派生于同一个类的不同对象上执行任务时,多态性是一种极为有效的技巧,其使用的代码最少。注意并不是只有共享同一个父类的类才能利用多态性。只要子类和孙子类在继承层次结构中有一个相同的类,它们就可以用相同的方式利用多态性。接口难理解接口是把隐式公共方法和属性组合起来,是封装特定功能的一个集合。接口不能单独存在。不能像实例化一个类那样实例化接口。接口不能包含实现其成员的任何代码,而只能定义成员本身。实现过程必须在实现接口的类中实现。一个类可以支持多个接口,多个类也可以支持相同的接口。总结什么是面向对象编程OOP编程的相关技术OOP的特征:封装、继承和多态 接口的作用