C语言是结构化编程,和面向对象编程 是不同风格。
结构化编程 基本方式是“功能分解法”,具体说 就是将要解决的实际问题 进行分解,把一个大问题分成若干子问题,每个子问题又可以分解为更小的问题,知道得到的子问题可以用一个函数来实现为止。
而面向对象编程 首先要将实际问题 抽象化 可以用一个模型 :
例如: 输入 :2个日期————>程序——————>输入 2个日期间的天数。
面向对象的程序有以下几个特点:
1.所有的函数都放入到一个类中 ,称为某个类的成员,类是编程的基本单元。
2外界不能直接调用类的成员函数,必须先创建一个对象,再通过对象来调用这些函数
3.只有声明为public的函数可以被外界调用,其余声明为private的函数是私有的,外界无法访问。
面向对象的核心概念
(1 )封装
封装的类=数据+对此数据所进行的操作(即算法)
通俗的说,封装就是:包起外界不必需要知道的东西,只向外界展露可供展示的东西。
(2)抽象
在使用面向对象的方法设计一个软件系统时,首先就要区分出现实世界的 事物所属的类型。
(3)继承
不是我们认为的遗传的继承, 而是包含的意思。
食品
水果 蔬菜
苹果 香蕉 土豆
重用已有代码而又不破坏已有代码。
(4)多态
基类拥有的特性,子类一定有,
用抽象的类编程 。
2 类与对象
类是面向对象编程的 基本单元。(一切皆为对象 )
只有声明为public的变量和函数可以被外界调用,其余声明为private的变量和函数是私有的,只能由自己的类使用。
例子 狗咬狗
class dog { public string name; public int HP = 100; public void fight(dog b) { Console.WriteLine(name+"开始攻击"+b.name); b.HP -= 10; } public void fight(dog b,int blood) { Console.WriteLine(name+"开始攻击"+b.name); b.HP -= blood; } public void show() { Console.WriteLine(name+":"+HP); } } class Class1 { static void Main(string[] args) { dog a = new dog(); a.name=("旺财"); dog b = new dog(); b.name=("大黄"); a.fight(b); a.show(); b.show(); b.fight(a); a.show(); b.show(); a.fight(b, 50); a.show(); b.show();
例子 输入人的姓名身高体重
class ren { public string name; private int hight; public int gethight() { return hight; } private int weight; public void setweight(int w) { weight = w; } public void yundong() { weight--; } public void sethight(int h) { if (h < 0 || h > 250) { Console.Write("身高输入错误"); } else { hight = h; } } public void show() { Console.WriteLine("我叫"+name+",身高:"+hight+"厘米, 体重:"+weight+"公斤"); } } class Class2 { static void Main11(string[] args) { ren d = new ren(); d.name = "小明"; d.sethight(120); d.setweight(79); d.show(); d.yundong(); d.show(); d.yundong(); d.show(); d.yundong(); d.show(); d.yundong(); d.show(); Console.Write(d.gethight());//get 和set 是一组对应函数, 设定 和 取得。 } }