面向对象:
可以通过封装、继承、多态,降低程序的耦合度。面向对象的三大特性为 继承封装 多态
简单的类的封装实例:
输入两个数,并输入运算符,得出结果:
控制台程序:
static void Main(string[] args)
{
Console.WriteLine("请输入一个数");
int a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("请输入另一个数");
int b = Convert.ToInt32(Console.ReadLine ());
Console.WriteLine("请输入运算符");
string strMark = Convert.ToString(Console.ReadLine());
Console.WriteLine(fun(a, b, strMark));
Console.ReadKey();
}
运算类程序:
public static int fun(int a , int b , string strMark)
{
int result = 0;
switch (strMark)
{
case "+":
result = a + b;
break;
case "-":
result = a - b;
break;
case "*":
result = a * b;
break;
case "/":
result = a / b;
break;
default :
break;
}
return result;
}
紧耦合与松耦合
首先看override 的特性: override 方法提供从基类继承的成员的新实现。 由 override 声明重写的方法称为重写基方法。 重写的基方法必须与 override 方法具有相同的签名。 不能重写非虚方法或静态方法。 重写的基方法必须是 virtual、abstract 或 override 的。override 声明不能更改 virtual 方法的可访问性。 override 方法和 virtual 方法必须具有相同的访问级别修饰符。您不能使用 new、static 或 virtual 修饰符来修改 override 方法。重写属性声明必须指定与继承属性完全相同的访问修饰符、类型和名称,并且被重写的属性必须是 virtual、abstract 或 override 的。
public class Operation
{
private double _numberA = 0;
private double _numberB = 0;
public double numberA
{
get {
return _numberA;
}
set
{
_numberA = value;
}
}
public double numberB
{
get { return _numberB; }
set { _numberB = value; }
}
public virtual double GetResult()
{
double result = 0 ;
return result;
}
}
class OperationAdd : Operation
{
public override double GetResult()
{
double result = 0;
result = numberA + numberB;
return result;
}
}
class OperationDiv : Operation
{
public override double GetResult()
{
double result = 0;
result = numberA / numberB;
return result;
}
}
class OperationSub : Operation
{
public override double GetResult()
{
double result = 0;
result = numberA - numberB;
return result;
}
}
class OperationMul : Operation
{
public override double GetResult()
{
double result = 0;
result = numberA * numberB;
return result;
}
}
下面开始实例化对象:简单工厂模式,
public class OperateFactory
{
public static Operation createOperation(string operate)
{
Operation oper = null;
switch (operate)
{
case "+":
oper = new OperationAdd();
break;
case "-":
oper = new OperationSub();
break;
case "*":
oper = new OperationMul();
break;
case "/":
oper = new OperationDiv();
break ;
default:
break;
}
return oper ;
}
}客户端代码:
Operation oper;
oper = OperateFactory.createOperation("+");
oper.numberA = 1;
oper.numberB = 1;
double result = oper.GetResult();