8yue21
面向对象
面向过程思想,强调的是完成某一件事情需要哪些步骤的先后顺序,侧重于实现功能步骤
面向对象思想,强调完成某一件事情需要哪些对象相互协作来完成,参与该事情的对象需要具备哪些功能,同时,该事件也是所有事件当中的某一功能,侧重于对象(类)的设计,
面向对象核心:转变考虑问题的方式,思考完成这件事需要哪些对象的来参与完成,协调实现
OOP(面向对象编程)达到软件工程的三个目标:
1、重用性 2、灵活性 3、扩展性
面向对象的优点 (低耦合 高类聚)
1、面向对象具有良好的可扩展性和重用性;
2、面向对象可以降低我们代码的耦合度(两个类的关联),提高代码的可移植性
3、面向对象接近于我们日常生活和自然的思考方式,可以提高我们代码软件开发的效率与质量
简答题:说说面向过程与面向对象
回答此类简答题要求详细,逻辑循序渐进,由浅入深。
所以回答该问题应该首先回答面向过程与面向对象是什么,
接着回答两者的特点以及区别,最后要说两者优缺点
面向过程是以事件为中心,强调的是完成某一件事情需要哪些步骤以及步骤的先后顺序。
面向对象以对象为中心,强调完成某一件事情需要哪些对象相互协作来完成,参与该事情的对象需要具备哪些功能。
面向过程特点是分析解决事物的步骤以及先后顺序,侧重的是实现功能的步骤。
而面向对象侧重的是分析事物需要参与的对象,各个对象的作用,
以及完成该事件每个对象需要负责的功能,侧重于对象的设计。
面向对象三大特性
封装(方法、属性)、继承、多态
类
定义:类是描述具有相同特征与行为的事物的抽象
作用:1、区分不同的事物 2、描述某种事物具备什么特征以及能做什么事 3、类是一种构造,通过该构造可以将不通类型的变量、方法组合在一起创建出自定义类型 4、类是面向对象程序设计实现信息封装的基础
类的声明
关键字 class 格式:访问修饰符 class 类名{类成员变量}
字段:是用来描述特征的
字段声明格式:访问修饰符 字段类型 字段名;
声明时初始化:访问修饰符 字段类型 字段名 = 初始值;
字段是用来描述 类的特征的
方法是用来描述 类的行为的
装箱(boxing)和拆箱(unboxing)是C#类型系统的核心概念.是不同于C与C++的新概念!,
通过装箱和拆箱操作,能够在值类型和引用类型中架起一做桥梁.换言之,可以轻松的实现值类型与引用类型的互相转换,装箱和拆箱能够统一考察系统,任何类型的值最终都可以按照对象进行处理.
C#语言中的所有类型都是由基类System.Object继承过来的,包括最常用的基础类型:int, byte, short,bool等等,就是说所有的事物都是对象。如果申明这些类型得时候都在堆(HEAP)中分配内存,会造成极低的效率!(个中原因以及关于堆和栈得区别会在另一篇里单独得说说!)
.NET如何解决这个问题得了?正是通过将类型分成值型(value)和引用型(regerencetype),C#中定义的值类型包括原类型(Sbyte、Byte、Short、Ushort、Int、Uint、Long、Ulong、Char、Float、Double、Bool、Decimal)、枚举(enum)、结构(struct),引用类型包括:类、数组、接口、委托、字符串等。
值型就是在栈中分配内存,在申明的同时就初始化,以确保数据不为NULL;
引用型是在堆中分配内存,初始化为null,引用型是需要GARBAGE COLLECTION来回收内存的,值型不用,超出了作用范围,系统就会自动释放!
装箱和拆箱的定义!
装箱就是隐式的将一个值型转换为引用型对象。比如:
int i=0;
Syste.Object obj=i;
这个过程就是装箱!就是将i装箱!
拆箱就是将一个引用型对象转换成任意值型!比如:
int i=0;
System.Object obj=i;
int j=(int)obj;
这个过程前2句是将i装箱,后一句是将obj拆箱!
再写个代码,看看进行了几次装拆箱!
int i=0;
System.Object obj=i;
Console.WriteLine(i+","+(int)obj);
其中共发生了3次装箱和一次拆箱!^_^,看出来了吧?!
第一次是将i装箱,第2次是输出的时候将i转换成string类型,而string类型为引用类型,即又是装箱,第三次装箱就是(int)obj的转换成string类型,装箱!
拆箱就是(int)obj,将obj拆箱!!