2、面向对象以及winform的简单运用(面向对象的四大基本特性)
2015-02-21 19:21
387 查看
面向对象的四大基本特性
面向对象的核心概念就是封装、抽象、继承、多态这四大基本特性,在这里先解释一下它们的定义:
封装:是一种隐藏信息的特性。找到变化并且把它封装起来,你就可以在不影响其它部分的情况下修改或扩展被封装的变化部分,这是所有设计模式的基础,就是封装变化,因此封装的作用,就解决了程序的可扩展性。
抽象:在使用面向对象的方法设计一个软件系统时,首先就要区分出现实世界中的事物所述的类型,分析它们拥有哪些性质与功能,再将它们抽象为在计算机虚拟世界中才有意义的实体——类,在程序运行时,由类创建出对象,用对象之间的相互合作关系来模拟真实世界中事物的相互关联。
继承:子类继承父类,可以继承父类的方法及属性,实现了多态以及代码的重用,因此也解决了系统的重用性和扩展性,但是继承破坏了封装,因为他是对子类开放的,修改父类会导致所有子类的改变,因此继承一定程度上又破坏了系统的可扩展性,所以继承需要慎用,只有明确的IS-A关系才能使用,同时继承在在程序开发过程中重构得到的,而不是程序设计之初就使用继承,很多面向对象开发者滥用继承,结果造成后期的代码解决不了需求的变化了。因此优先使用组合,而不是继承,是面向对象开发中一个重要的经验。
多态:接口的多种不同的实现方式即为多态。接口是对行为的抽象,刚才在封装提到,找到变化部分并封装起来,但是封装起来后,怎么适应接下来的变化?这正是接口的作用,接口的主要目的是为不相关的类提供通用的处理服务,我们可以想象一下。比如鸟会飞,但是超人也会飞,通过飞这个接口,我们可以让鸟和超人,都实现这个接口,这就实现了系统的可维护性,可扩展性。
只说这些概念性的东西,可能会很难理解,所以给大家再用实例解释一下它们各自的含义:
1、封装可以包起外界不必需要知道的东西,只向外界展露可供展示的东西。封装的类=数据+算法
如:定义一个Name对象的方法——(先写上private string _Name,右键,重构,封装)封装具有属性,可以用来操作,字段不具有属性,无法get set
在get,set中可以写上很多种算法,最终让它的返回值返回给Name类,从而实现隐藏信息的效果。
2、抽象即写好一个类,用来在编程中调用。
如:根据年龄、性别来判断是否超重的函数(类)
再在主函数中调用:
new的过程也就是由类创建出新对象的过程,也就是函数的一个扩展。
继承——相当于父子关系,食品可以分为水果、蔬菜等等,而水果又可以分为苹果、西瓜等等,它们都继承了上一级的特点。
多态——水果有很多种,分为苹果、西瓜等,这便是它的多种形态。
这些特性还有很多扩展的概念,将会在下面的几章提到。
面向对象的核心概念就是封装、抽象、继承、多态这四大基本特性,在这里先解释一下它们的定义:
封装:是一种隐藏信息的特性。找到变化并且把它封装起来,你就可以在不影响其它部分的情况下修改或扩展被封装的变化部分,这是所有设计模式的基础,就是封装变化,因此封装的作用,就解决了程序的可扩展性。
抽象:在使用面向对象的方法设计一个软件系统时,首先就要区分出现实世界中的事物所述的类型,分析它们拥有哪些性质与功能,再将它们抽象为在计算机虚拟世界中才有意义的实体——类,在程序运行时,由类创建出对象,用对象之间的相互合作关系来模拟真实世界中事物的相互关联。
继承:子类继承父类,可以继承父类的方法及属性,实现了多态以及代码的重用,因此也解决了系统的重用性和扩展性,但是继承破坏了封装,因为他是对子类开放的,修改父类会导致所有子类的改变,因此继承一定程度上又破坏了系统的可扩展性,所以继承需要慎用,只有明确的IS-A关系才能使用,同时继承在在程序开发过程中重构得到的,而不是程序设计之初就使用继承,很多面向对象开发者滥用继承,结果造成后期的代码解决不了需求的变化了。因此优先使用组合,而不是继承,是面向对象开发中一个重要的经验。
多态:接口的多种不同的实现方式即为多态。接口是对行为的抽象,刚才在封装提到,找到变化部分并封装起来,但是封装起来后,怎么适应接下来的变化?这正是接口的作用,接口的主要目的是为不相关的类提供通用的处理服务,我们可以想象一下。比如鸟会飞,但是超人也会飞,通过飞这个接口,我们可以让鸟和超人,都实现这个接口,这就实现了系统的可维护性,可扩展性。
只说这些概念性的东西,可能会很难理解,所以给大家再用实例解释一下它们各自的含义:
1、封装可以包起外界不必需要知道的东西,只向外界展露可供展示的东西。封装的类=数据+算法
如:定义一个Name对象的方法——(先写上private string _Name,右键,重构,封装)封装具有属性,可以用来操作,字段不具有属性,无法get set
private string _Name;//命名规则:下划线+大写字母开头 public string Name { get//取值 { return _Name; } set//赋值 { _Name = value; } }
在get,set中可以写上很多种算法,最终让它的返回值返回给Name类,从而实现隐藏信息的效果。
2、抽象即写好一个类,用来在编程中调用。
如:根据年龄、性别来判断是否超重的函数(类)
public int cetizhong(string sex,decimal shengao,decimal tizhong) { if (sex == "男") { decimal biaozhun = shengao - 100; if (tizhong > biaozhun + 3) { return 1;//重 } else if (tizhong < biaozhun - 3) { return 2;//瘦 } else { return 0;//标准 } } else if (sex == "女") { decimal biaozhun1 = shengao - 100; if (tizhong > biaozhun1 + 3) { return 1;//重 } else if (tizhong < biaozhun1 - 3) { return 2;//瘦 } else { return 0;//标准 } } else return 3; }
再在主函数中调用:
Ren r = new Ren(); Console.WriteLine("请输入姓名:"); r.name = Console.ReadLine(); Console.WriteLine("请输入姓别:"); r.sex = Console.ReadLine(); Console.WriteLine("请输入身高:"); r.shengao = decimal.Parse(Console.ReadLine()); Console.WriteLine("请输入体重:"); r.tizhong = decimal.Parse(Console.ReadLine()); int fanhui = r.cetizhong(r.sex, r.shengao, r.tizhong); if(fanhui ==0) Console.WriteLine("标准"); else if(fanhui == 1) Console.WriteLine("偏重"); else Console.WriteLine("偏瘦");
new的过程也就是由类创建出新对象的过程,也就是函数的一个扩展。
继承——相当于父子关系,食品可以分为水果、蔬菜等等,而水果又可以分为苹果、西瓜等等,它们都继承了上一级的特点。
多态——水果有很多种,分为苹果、西瓜等,这便是它的多种形态。
这些特性还有很多扩展的概念,将会在下面的几章提到。
相关文章推荐
- 6、面向对象以及winform的简单运用(抽象基类与接口)
- 5、面向对象以及winform的简单运用(方法重载、隐藏、重写与虚方法)
- 4、面向对象以及winform的简单运用(继承与多态、命名空间与类库)
- 7、面向对象以及winform的简单运用(委托)
- 1、面向对象以及winform的简单运用(开篇)
- 3、面向对象以及winform的简单运用(类的初步认识)
- 8、面向对象以及winform的简单运用(事件与winform入门)
- 9、面向对象以及winform的简单运用(输入输出流、图像的上传和读取)
- 10、面向对象以及winform的简单运用(isMdicontainer的设置、timer控件进行倒计时的制作)
- 面向对象来做一个迷宫游戏(努深刻学习面向对象技术以及面向对象的设计模式)
- CG学习(2)——CG的基本语法及核心函数的面向对象简单封装
- 面向对象第八课,面向对象三大基本特征,继承,基本概念(重要)
- (40)面向对象的三大特性继承性(41)面向对象中常用的关键字和魔术方法
- Java编程那些事儿61—面向对象设计方法和面向对象特性(一)
- 面向对象的三大特性和面向对象开发
- 面向对象思想解决的问题以及面向对象的三个特征
- 面向对象语言的基本特性
- java面向对象主要有四大特性
- 面向对象三大基本特性,五大基本原则
- C#基本语法 - 面向对象特性的学习