第一课 类 对象 类成员的简介
1.
类Class是实现现实世界事物的模型
类是现实事物抽象所得的结果;
事物包括物质(实体)和运动(逻辑)
建模是一个去伪存真,由表及里的过程
2.
类与对象的关系
什么时候是对象(现实),什么时候是实例(程序)
1.对象也叫实例,是类经过实例化后得到内存中的实体
2.对象和实例是一回事;必须是实例飞,概念不能飞;有的类不能实例化(依照类,我们可以创建对象),比如数学,我们不能说一个数学
3.使用new操作符创建类的实例 #
引用变量与实例的关系
ü 孩子(Form myForm)与气球(new Form());
ü 气球不一定有孩子牵着;(Form myForm)
ü 多个孩子可以使用各自的绳子牵着同一个气球,也可以都通过一根绳子牵着
Form myForm1=
new Form();
Form myForm2=
myForm1;
- 类的三大成员
l 属性(Property):存储数据,组合起来表示类或对象当前的状态
l 方法(Menthod):表示类或对象能做什么,构成逻辑的成员
l 事件(Event):类或对象通知其他类或对象的机制,为C#特有
某些特殊的类或对象在成员方面的侧重点不同:
Ø 模型类或对象重在属性,例如:Entity Framework//连接数据库
NuGet获取Entity Framework引用dll
Solution添加 new item-Date-ASO.NET.Entity
Date Model-从数据库新建-新建连接-Microsoft
SQL Server-.-opc149-测试连接
OPC149Entities proxy = new OPC149Entities();
foreach (Box_Main box_Main in proxy.Box_Main){
Console.WriteLine(box_Main.BoxName);
Console.ReadLine();}
static void Main(string[] args)
{
AdventureWorksLT2012Entities proxy
= new
AdventureWorksLT2012Entities();
foreach (Product p in proxy.Products){Console.WriteLine(p.Name);}Console.WriteLine(\"___________\");Console.WriteLine(proxy.Product.Count());
}
Ø 工具类或对象重在方法,如:Math,Console
double x = Math.Sqrt(4);
Console.WriteLine(x);
Ø 通知类或对象重在事件,如各种Timer
Using system.Windows.Threading;
Public MainWindow()
{
InitializeComponent();
DispatcherTimer timer=new DispatcherTimer();
Timer.Interval=TimeSpan.FromSeconds(1);
timer.Tick+=timer_Tick;
timer.Start();
}
Void timer_Tick(object sender, EventArgs e)
{
This.timeTextBox.text=DateTime.Now.ToString();
}
- 类的静态成员与实例成员
静态(static)成员在语义上表示它是“类的成员”表示一类事物的特点
实例(非静态)成员在语义上表示它是”对象的成员”
表示个体对象的特点
关于绑定(Binding)
绑定是指编译器如何把一个成员与类或对象关联起来
不可小觑的”.”操作符——成员访问操作符
第三课 C#语言的基本元素概览,初识类型,变量,方法算法
构成C#语言的基本元素
l 关键字(keyWord)
l 操作符(Operator)
l 标识符(Identifier)—-名字 大小写规范:1.大小写规范:变量名:驼峰法 其他名用Pascal法
l 标点符号
l 文本(字面值)
整数(int,long),实数(小数),字符,字符串,布尔,空值
注释与空白 // , /* */
简要介绍类型,变量,方法
ž 初识类型(Type)亦称为数据类型(Date Type)
Var x=3;
Console.WriteLine(x.GetType().Name);
ž 变量是存放数据的地方,简称“数据”
变量的声明
变量的使用
ž 方法(函数)是处理数据的逻辑,又称算法
方法的声明
方法的调用
class Calculate
{
public int Add(int a,int b )//有参数有返回值
{
int result = a + b;return result;
}
public string Today() //无参数,有返回值
{
int day =
DateTime.Now.Day;
return day;
}
public void PrintSum(int a,int b)//有参数,无返回值
{
int result = a + b;Console.WriteLine(result );}
ž 程序=数据+算法
算法的简介
循环和递归()
循环:
public void XTo1Print(int x)
{
for (int i =x; i > 0; i--){Console.WriteLine(i);}
递归
public void XTo1Print(int x)
{
if (x==1){Console.WriteLine(x);}else{Console.WriteLine(x);Console.WriteLine(x-1);}
计算1到x的和
循环:public int SumFrom1ToX (int x)
{
int result = 0;for (int i = 0; i < x;
i++)
{result = result + i;}return result;
}
递归也称迭代:public int SumFrom1ToX (int x)
{
if (x==1){return 1;}else{int result = x +
SumFrom1ToX(x – 1);
return result;}
汉诺塔问题的作业:将A柱上的n个圆盘通过B柱移至C柱
hannuota(n,A,B,C)
一共分三步:
首先将A柱上的n-1个圆盘通过C柱移至B柱;hannuota(n-1,A,C,B)
将A柱上的第n个圆盘移至C柱;
将B柱上的n-1个圆盘通过A柱移至C柱; hannuota(n-1,B,A,C)
*注意:当n=1时,即已经完成以上第一步的特殊情况,只需完成后两步,而由于此时第三步的n=0,故须终止第三步
对于此类情况可以加入一个if语句来判断:当n减小到1时 只需完成以上三步中的第二步;否则执行以上三步。
class Program
{
static void Main(string[] args)
{
Calculate c = new Calculate();
int n;string A = \"第一根柱子\";string B = \"第二根柱子\";string C = \"第三根柱子\";Console.Write(\"请输入柱子上有多少个圆盘:\");string x =
Console.ReadLine();
n = Convert.ToInt32(x);c.HanNuoTa(n, A, B, C);Console.ReadLine(); }
}
class Calculate
{
public void HanNuoTa(int x, string A, string B, string C)
{
if (1 == x){Console.WriteLine(\"将{0}中的第{1}块移至{2}\", A, x, C);}else{HanNuoTa(x - 1, A, C, B);//第一步Console.WriteLine(\"将{0}中的第{1}块移至{2}中\",A ,x,C);//第二步HanNuoTa(x - 1, B, A, C);//第三步}
}
}