第1章C简单程序设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第1章C#语言概述前言1.1面向对象的程序设计思想1.2C#的运行环璄和系统要求1.3我的第一个C#程序总结前言–JAVA与C#风云JAVASUNJ2EEJAVA发展了11年虚拟机开源虚拟机实现了平台无关性开源一种对知识所有权的态度MicroSoftC++J#c#.NETASP.NET不容忽视的帝国返回首页前言–企业的需求所有企业的共同点:经济动物—关心利润此外还关心:效率,质量,成本,解决问题,难度,稳定性,可维护性…..返回首页前言–企业对软件技术人员的需求研发人员:软件结构师软件需求分析师高级程序员/程序员测试师/员美工师/员管理:总工/总负责人项目经理调度/文档管理人员技术技持:培训师数据库管理员/系统管理员网管编辑人员返回首页销售:销售工程师前言–企业业务的分类数据库管理系统OA,会计系统,进销存系统,物流系统,各种ERP系统…ERP---一种采用现代技术实现的新的管理方法.特点:删减层次,加速管理部门获取数据(时间,精度,难度)特点:业务处理自动化高级数据库管理系统数据仓库,数据挖掘…基于数据库管理系统之上,强调对数据分析的智能化基于INTERNET的系统各种网站,电子商店系统(网上购物)…各种窗体系统winform各种管理系统与上述相似,只是用户的界面不是基于浏览器,而是专用的程序窗体.嵌入式设备开发仪表程序,智能家电,手机程序(游戏)返回首页前言–开发人员需要的知识返回首页公共部份数据库管理系统窗体系统嵌入式设备开发JAVA方面JAVA语法IDE:eclivpt/JbuildJSP语法其它IDEJAVA的API库其它IDE设备的API.NET方面VB/C#语法,IDE:VS2005APS.net语法.NETAPI库设备特有的API(其他的共用.NETAPI)公共方面软件工程,业务知识,SQLJavascriptHtmlCSSXML前言–.NET学习流程热情+责任心C#基础语法.NET常用API知识Asp.net知识SQL知识XML(一种基于标识符的数据结构或思想)HTMLCSSJvavScript等知识软件工程知识(UML,常用的OOP框架)相应的对业务的知识egman@163.com返回首页前言–如何学好程序语言好的导师主动的思考,提问加强实践返回首页1.1面向对象的程序设计思想1.1.1什么是对象?1.1.2什么是类?1.1.3对象与类的关系1.1.4C#中的类与对象1.1.5面向对象的三个重要概念返回首页1.1.1什么是对象?名词:”对象”返回本节以上都是物理对象1.1.1什么是对象?名词:”对象”返回本节扩展联想:书、人、车概念对象问题:如何区分不同的对象呢?1.1.1什么是对象?名词:”对象的属性”返回本节对象1小明对象2小张(如何区分这两个对象呢?)属性:对象1.姓名=小明对象2.姓名=小张(通过其它属性进一步区分这两个对象)对象1.性别=男对象1.年龄=23对象1.身高=170对象2.性别=女对象2.年龄=18对象2.身高=150…1.1.1什么是对象?名词:”对象的操作方法”简称对象的方法返回本节对象1小明.读书()对象2小张.吃饭(就餐时间,食物s)对象2小张.跳舞()对象2小张.成长()改变小张.身高改变小张.年龄方法的作用:1.改变对象本身的状态(属性)2.作用于其它对象,改变其状态例子:小明.打架(小李)小李.健康下降1.1.1什么是对象?小结:1.现实中一切皆为对象;2.软件设计时,只把我们研究的物体视为对象,其他支节视为属性;3.对象是数据(属性)和方法的集合体.返回本节1.1.2什么是类?对象1.性别=男对象1.年龄=23对象1.身高=170对象2.性别=女对象2.年龄=18对象2.身高=150对象1.性别对象1.年龄对象1.身高对象2.性别对象2.年龄对象2.身高为了更好的创建和使用对象,可以把具有相同属性的对象提炼成一个蓝本------类如上例中:对象1对象2可以抽象成一个“人”的类“人”类的属性有:人.姓名人.年龄人.性别人.身高…返回本节1.1.2什么是类?同理:对象的方法可以被抽像成类的方法:返回本节对象1小明.读书()对象2小张.吃饭(就餐时间,食物s)对象2小张.跳舞()对象2小张.成长()人.读书()人.吃饭(就餐时间,食物s)人.跳舞()人.成长()类对象:类是对象的抽象对象类:对象是类的实例化返回本节1.1.3对象与类的关系名词:抽象实例化抽象:一种人们从具体事情中提炼出共性的本领实例化:从共性中还原具体事情的过程或结果//类的定义class类名{属性1;…操作方法1(){};…}返回本节1.1.4C#中的类与对象//把类实例化成对象//法1类名对象1;//得到一个对象变量对象1=new类名();//实例化成对象对象1.属性1=“XX”;//给对象属性赋值…..//法2类名对象2=new类名();//实例化成对象,并用对象名指向该对象对象2.属性1=“XX”;//给对象属性赋值…..//法3类名对象2=new类名(参数1,…);//实例化的同时给对象属性赋值,并用对象名指向该对象…返回本节1.1.5面向对象的三个重要概念1.1.5.1封装1.1.5.2继承与派生1.1.5.3多态性返回本节1.1.5.1封装Public锁.状态锁:Public锁.打开();Public锁.关闭();Private锁.零件1…Private锁.动作1();…封装:一种实现内部细节隐藏的技术.只能通过对象提供的公共接口才能访问它.优点:1.使对象更安全2.使用者更方便地使用它3.便于重复利用返回本节1.1.5.1封装C#中的封装//锁类的定义class锁{public状态;…private零件1;…public打开(){};public关闭(){};…private动作1(){};}//使用锁锁1=new锁(“关上的”)屏幕.显示(锁.状态);//正确公有的锁1.打开();//正确公有的屏幕.显示(锁1.零件1);//错误私有的内部的锁1.动作1();//错误私有的内部的返回本节1.1.5.2继承例子:父母不会音乐(没有考虑音乐的事情)…子女喜欢音乐…只设计一个类---”人”类行吗?然后把所有想到的属性和方法通通加进去万一考虑不周,漏了怎么办?就算当时没漏,如何应付以后新出现的属性或方法呢?解决方法1:分别定义不同的类,如父母类子女类…那相同的部份还要再次打入,不是浪费时间和空间,万一相同部分同时要改变怎么办?解决方法2:继承先设计一个基类“父母”类定义父母的行为,然后利用基类派生出一个新的类“子女”类.这样”子女”类就具有了”父母”类的属性和方法了,对于差异的部份,在”子女”类中改写”父母”类中方法的.对于”父母”类中没有,而在”子女”类中新增的部份只要在”子女”类中增加就可以了.返回本节1.1.5.2继承C#中的继承与派生//父母类的定义class父母{public姓名;public年龄;…public阅读(书){if(书!=中文)屏幕.显示(“我只能看中文的书”);else屏幕.显示(“太好看了”);}}//子女类的定义Class子女:父母{public爱好音乐程度;publicnew阅读(书){if(书==英文)屏幕.显示(“有意思”);else屏幕.显示(“我喜欢看英文书”);}}//使用子女对象1=new子女();对象1.姓名=“小明”;//虽然没有在子女类中定义过姓名的属性,但却因为继承了父母类,所以得到了姓名的属性对象1.爱好音乐程度=“非常喜欢”;//子女类特有的属性对象1.阅读(“英文书”);//调用的是子女类的方法,显示//我喜欢看英文书//那如果小明的本能如何((父母)对象1).阅读(“英文书”);//调用的是基类的同名公//有方法,显示//我只能看中文书返回本节1.1.5.2继承继承与派生:一个类与另一个类的层次关系优点:通过从基类中派生出新类,解决了共性共用,和个性差异的问题返回本节1.1.5.2多态性考察以下案例:如果我是用户,我并不关心电厂是如何发电的,我关心的是怎样得到”电”水力发电厂火力发电厂风力发电厂燃气发电厂核能发电厂太阳能发电厂发电厂派生类基类抽象的它们都有一个共同的方法发电(){},但因为每个电厂的工作原理实际上是不同的所以每个不同发电厂的发电方法的实现也是不同的.但返回的参数电,却是相同的.我们可以用上节的继承特性来分别实现这个发电()方法.返回本节1.1.5.2多态性//基类的定义classabstract发电厂{public发电(){空};}//派生类的定义class火力发电厂:发电厂{publicnew发电(){火力发电};}class核能发电厂:发电厂{publicnew发电(){核能发电};}…//用户类Class用户{Public用电(火力发电厂对象);Public用电(核能发电厂对象);…}//使用火力发电厂发电厂1=new火力发电厂();核能发电厂发电厂2=new核能发电厂();风力发电厂发电厂3=new风力发电厂();…用户用户1=new用户();用户1.用电(发电厂1);//得到火力发电厂1的电用户2.用电(发电厂2);//得到核能发电厂2的电…用户每次使用不同的电厂来的电,都必须新增加一个方法,很不方便.更可怕的是:如果用户的部份已经编译好了,而且在使用中了,如何面对未来的新的发电厂类型?返回本节1.1.5.2多态性//基类的定义classabstract发电厂{publicvirtual发电(){空};}//派生类的定义class火力发电厂:发电厂{publicovertride发电(){火力发电};}class核能发电厂:发电厂{publicovertride发电(){核能发电};}…//用户类Class用户{Public用电(发电厂对象);…}//使用发电厂发电厂1=new火力发电厂();发电厂发电厂2=new核能发电厂();…用户用户1=new用户();用户1.用电(发电厂1);//得到火力发电厂1的电用户2.用电(发电厂2);//得到核能发电厂2的电发电厂2=new风力发电厂();用户2.用电(发电厂2);//得到风力发电厂2的电…返回本节1.1.5.3多态性多态性:老代码可以调用新代码的技术优点:不怕面对未来的变化,实现动态改变返回本节1.1.5面向对象设计小结1.以观察现实生活的视角来设计软件2.数据和功能的统一模块化可复用3.实现不必要的数据隐藏数据安全,使用简单4.设计分析建模5.面向对象=对象+类+继承+通信注意:面向对象仅是软件设计方法的一种(虽然极为常用)此外还有面向过程(工程计算,硬件程序)面向逻辑(人工智能)面向规则(知识库,专家系统)1.2C#的运行环璄和系统要求1.2.1开发平台(IDE)1.2.2系统配置1.2.3学习环璄返回本节1.2.1开发平台(IDE)C#开发平台Visualstudio2005(team)评价:多语言(C++,C#,J#,B#等),多用途开发环璄功能齐全,智能,内容庞大,可图形化编程本身就是一个很好的老师C#语言版本:2.0评价:增加了许多新特性返回本节1.2.2系统配置系统软件:WindowsXP/2003+formwark2.0框架扩展要求:MSsql2005,IIS硬件(建议):CPU1.5GHz以上内存1GB以上硬盘4G空间以上分辩率1028X1024以上建议:能访问互联网返回本节1.2.3C#的学习环璄1.利用VS2005自身2.在MSDN中学习没有网络时选择安装MSDN光盘,否则可以访问MSDN网络3.在Microsoft开源网站中学习重点学习软件架构软件架构---又称软件框架4.在各种IT从业者的博客文章中学习原创性好,针对性好,互动性好简单生动,5.各种相关的B

1 / 43
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功