怎么才算面向对象 怎么算基于对象

问题描述

原以为会了点面向对象,可前几天看了个帖子,感觉似乎离的太远了。举个例子吧。一个进销存,后台数据库,customer表纪录客户的所有信息。我一般在做的时候,在客户信息录入界面,就是将一个datatable绑定到每个控件的属性(大部分是textbox的text)。然后,执行对应的insert或者update操作。我原以为这就是面向对象了。可看了那个帖子,说道,这只是数据库的E-R关系。似乎应该按照customer的字段,设计一个customer类,类的属性代表对应的字段,并有相应的方法。最后,将类的属性与界面的控件绑定。这样才是面向对象。而原来的方法只是基于对象。那要在录入单据的时候,一般后台都是两个表的(主子表)。那么,又该怎么设计类呢?才算面向对象。不管用哪种方法实现,哪种方法针对这个应用更简单,既然用c#这面向对象的语言,至少应该懂得什么是真正的面向对象,什么是基于对象吧。现在请高手们解惑,讲讲这种情况下,如何算面向对象,如何算基于对象????

解决方案

解决方案二:
抛砖引玉哈~!个人感觉:第一种做法是直接对数据的操作client-->data第二种做法是把要操作的数据抽象出一个对象,是对对象的属性的操作client-->object-->data两者的差别就在于用户和实际的数据之间多了个对象,这个对象的存在是为了让实际的数据data能更符合人client的思维逻辑方式面向对象的话,如果业务逻辑都是以对象为基础的就能算是面向对象了吧
解决方案三:
usingSystem;namespaceMedicineMis.Common.Domain.Employees{publicclassEmployee:BaseObject{#region定义私有成员privateshort_embranchmentId;privateshort_employeeId;privatestring_embranchmentName;privatestring_code;privatestring_name;privatestring_spellCode;privatestring_sex;privatestring_address;privatestring_telephone;privatestring_mobilePhone;privatestring_departId;privatebool_isUser;privatestring_study;privatestring_duty;privatestring_comment;privateDateTime_graduateDate;privateDateTime_inDate;privatestring_jSZC;privatestring_zYZG;privatebool_cFQ;privatedecimal_cFF;privatestring_passWord;privatestring_text;privatebyte[]_image;privatestring_indentityNumber;privatestring_specialty;privatestring_excuQualificationNumber;privatestring_excuType;privatestring_excuRegisterNumber;privatestring_excuRegisterUnit;privateDateTime_excuIssueDate;privateDateTime_excuInvalidate;privatestring_practNumber;privatestring_practIssueUnit;privatestring_practWorkUnit;privatestring_practInvalidate;privatestring_othCertName;privatestring_othCertIssueUnit;privatestring_othCentNumber;privateDateTime_othCentIssueDate;privatestring_othCentWorkUnit;privatestring_resume;privatestring_others;#endregion#region默认参数为空的构造函数///<summary>///默认构造函数///</summary>publicEmployee(){_employeeId=0;_code=null;_name=null;_spellCode=null;_sex="男";_address=null;_telephone=null;_mobilePhone=null;_departId=null;_isUser=false;_study="小学";_duty=null;_comment=null;_graduateDate=newDateTime();_inDate=newDateTime();_jSZC=null;_zYZG=null;_cFQ=false;_cFF=0;_passWord=null;_text=null;_image=newbyte[]{};_fddbr=false;_qyfzr=false;_zlfzr=false;_indentityNumber=null;_specialty=null;_excuQualificationNumber=null;_excuType=null;_excuRegisterNumber=null;_excuRegisterUnit=null;_excuIssueDate=newDateTime();_excuInvalidate=newDateTime();_practNumber=null;_practIssueUnit=null;_practWorkUnit=null;_practInvalidate=null;_othCertName=null;_othCertIssueUnit=null;_othCentNumber=null;_othCentIssueDate=newDateTime();_othCentWorkUnit=null;_resume=null;_others=null;}#endregion#region定义公共方法publicshortEmbranchmentId{get{return_embranchmentId;}set{_isChanged|=(_embranchmentId!=value);_embranchmentId=value;}}publicshortEmployeeId{get{return_employeeId;}set{_isChanged|=(_employeeId!=value);_employeeId=value;}}publicstringCode{get{return_code;}set{if(value!=null&&value.Length>10)thrownewArgumentOutOfRangeException("InvalidvalueforCode",value,value.ToString());_isChanged|=(_code!=value);_code=value;}}publicstringName{get{return_name;}set{if(value!=null&&value.Length>10)thrownewArgumentOutOfRangeException("InvalidvalueforName",value,value.ToString());_isChanged|=(_name!=value);_name=value;}}publicstringEmbranchmentName{get{return_embranchmentName;}set{if(value!=null&&value.Length>20)thrownewArgumentOutOfRangeException("InvalidvalueforEmbranchmentName",value,value.ToString());_isChanged|=(_embranchmentName!=value);_embranchmentName=value;}}publicoverrideintGetHashCode(){inthash=57;hash=27*hash*_employeeId.GetHashCode();returnhash;}#endregion}}

解决方案四:
基于对象?执着的符合面向对象就是错误的,保证程序相对健壮就可以了。
解决方案五:
没看懂那段程序是什么意思
解决方案六:
我并不是执著,如果在实现我的目标的前提下,哪种更简单我就选哪种但问题是,我必须得搞懂面向对象和基于对象的区别。比如,一个跟数据表类似的datatable,我也把它看作一个对象,可以通过adapter将更改保存到数据库。那么,为它建一个类,把相关的字段表示为类的属性,然后,还得将所有属性值,通过一种方式存入到数据库中。两种做法,区别在哪,后一种感觉繁琐,有没有什么优点。两种都属于面向对象还是一种是一种不是,等等。
解决方案七:
upself
解决方案八:
面向对象是一种思维方式,是一种解决问题的方法...将问题抽象为对象来解决它的过程就是面向对象...基于对象仅仅是使用对象,无法利用现有的对象模板产生新的对象类型继而产生新的对象...利用面向对象方法的成果以面向过程方法来解决问题就是基于对象...比如只是使用.NETFramwork类库却没有在架构上有面向对象的设计,就只是在形式上面向对象,而实质上只是库函数的一种扩展...很有一些人常常打着面向对象的幌子,干着过程编程的勾当...
解决方案九:
同意面向对象是一种思维方式,基于对象只是对对象的引用。面向对象编程时一般着重对象摸拟现实状态,很复杂,它的特点是可持久性及可扩展性;基于对象基本上就是可视化编,知道引用已做好的控制就行了。
解决方案十:
执着的符合面向对象就是错误的,保证程序相对健壮就可以了。同意
解决方案十一:
面向对象是一种思维方式,和面向过程不同。比如楼主想到要读数据,则马上新建个ADO对象,想到要显示数据,则绑定到界面控件,这就是一种面向过程的思维。就是说顺着工作的流程而下,如果遇到分支,则用if,else等。面向对象的思维需要结合现实世界来考虑。我个人认为公司人事管理非常能说明这一点。每一位员工代表一个类,每一个部门可以看成一个抽象类,他们有共同的工作任务,但每个人又不相同。部门又分很多种,有办实事的,有协调的,有中转的,有控制的。你可以拿你的程序和这个对比一下,比如数据合法性验证方面,是否专门有一组类,就如质检部门一样?这组类是否有合适的接口,让界面类组能方便的将数据传递到质检类?检验完成后是否有一组类似于仓管部门的类?专门负责把生产好的数据存到仓库(数据库)去?这组仓管类专门负责进货,出货(读取,保存数据)?呵呵,不知道你是否看的懂?至于你提的那个为每个数据表见一个类的问题,术语叫O-RMapping,在java里面有大量的开源框架支持,你可以看看这方面的东西
解决方案十二:
想不到OO的讨论蔓延到CSDN了==================================挑一挑楼上的错误每一位员工代表一个类,每一个部门可以看成一个抽象类=================================================每个数据表见一个类的问题,术语叫O-RMapping这个不敢苟同
解决方案十三:
支持7楼.......面向过程...感觉是在建立单一的线....多条线...以后就会成乱麻了...面向对象...更感觉向层..或者面...每一层都有自己要解决的问题.代码分层慢慢细化...
解决方案十四:
想不到OO的讨论蔓延到CSDN了==================================挑一挑楼上的错误每一位员工代表一个类,每一个部门可以看成一个抽象类=================================================每个数据表见一个类的问题,术语叫O-RMapping这个不敢苟同不知11楼有何精辟的见解?
解决方案十五:
泡方便面的时候你打开盖子,向里面加入调料,葱,辣椒粉,灌上水,等5分钟.你就是面向过程的而你打开盖子,将调料包里的调料放入,将葱包里的葱放入,将辣味粉包里的辣椒粉放入,将温瓶里面的水灌入,等手表里分针偏离5个刻度.你就是面向对象的如果你直接叫老板帮你泡好,你就是基于对象的
其他方案:
面向对象,已经讨论这么多年了,还是没有什么完全让人信服的定义,还是自己慢慢体会,感觉lz只是在问这两种架构的区别而已。其实这两种结构对功能什么没有啥影响啊,只是后一种结构清晰,分工明确而以,相当于流水线作业,每个人只管自己那一块,剩下的别人做。还是别去讨论这个了,越讨论越晕。仁者见仁,智者见智,自己体悟比较好。纯粹是一种想法。就和那本最短的小说一样。内容都是不一样的。
其他方案:
如果你直接叫老板帮你泡好-----------------那你不是老板娘就是小蜜...
其他方案:
它建一个类,把相关的字段表示为类的属性,然后,还得将所有属性值,通过一种方式存入到数据库中。

时间: 2024-10-01 13:30:42

怎么才算面向对象 怎么算基于对象的相关文章

&amp;#106avascript技术讲座-基于对象的&amp;#106avascript语言

对象 JavaScript语言是基于对象的(Object-Based),而不是面向对象的(object-oriented).之所以说它是一门基于对象的语言,主要是因为它没有提供象抽象.继承.重载等有关面向对象语言的许多功能.而是把其它语言所创建的复杂对象统一起来,从而形成一个非常强大的对象系统. 虽然JavaScript语言是一门基于对象的,但它还是具有一些面向对象的基本特征.它可以根据需要创建自己的对象,从而进一步扩大JavaScript的应用范围,增强编写功能强大的Web文文件. 一.对象的

基于对象的JavaScript语言

JavaScript语言是基于对象的(Object-Based),而不是面向对象的(object-oriented).之所以说它是一门基于对象的语言,主要是因为它没有提供象抽象.继承.重载等有关面向对象语言的许多功能.而是把其它语言所创建的复杂对象统一起来,从而形成一个非常强大的对象系统. 虽然JavaScript语言是一门基于对象的,但它还是具有一些面向对象的基本特征.它可以根据需要创建自己的对象,从而进一步扩大JavaScript的应用范围,增强编写功能强大的Web文档. 一.对象的基础知识

谈谈我对面向对象以及类与对象的理解

对于刚接触JAVA或者其他面向对象编程语言的朋友们来说,可能一开始都很难理解面向对象的概念以及类和对象的关系.笔者曾经带过一个短期培训班教授java入门基础,在最后结束课程的时候,还有很多同学不太理解面向对象的思维以及类与对象的意义.这几天有空,就想着整理整理自己的思路,谈谈自己对面向对象以及类与对象的理解. 面向对象 首先,一言不和先百度,得到如下定义: 一切事物皆对象,通过面向对象的方式,将现实世界的事物抽象成对象,现实世界中的关系抽象成类.继承,帮助人们实现对现实世界的抽象与数字建模. 我

Javascript基于对象三大特性(封装性、继承性、多态性)_javascript技巧

Javascript基于对象的三大特征和C++,Java面向对象的三大特征一样,都是封装(encapsulation).继承(inheritance )和多态(polymorphism ).只不过实现的方式不同,其基本概念是差不多的.其实除三大特征之外,还有一个常见的特征叫做抽象(abstract),这也就是我们在一些书上有时候会看到面向对象四大特征的原因了.一.封装性    封装就是把抽象出来的数据和对数据的操作封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作(成员方法),才能

马云在深圳IT领袖峰会说:人算不如天算,天算就是云计算

人算不如天算,天算就是云计算 4月2日,马云在深圳IT领袖峰会发表主题演讲,再度谈论对云计算的观点:人算不如天算,天算就是云计算.监管要从人算变成计算,要更加科学.要更加着眼未来. 马云在演讲中说,我们不能一方面说转型升级,一方面还要对落后产业进行保护.互联网经济也未必活的好,除了BAT以外,请大家告诉我有哪几家企业利润很好的?BAT为什么利润好,不仅仅因为他们走得早,而是每家企业都有自己的核心竞争力,核心的技术,腾讯的技术,百度的技术,阿里的技术,技术才是未来真正的红利.如果你没有独特的技术,

马云再谈云:人算不如天算,天算是云计算

本文讲的是马云再谈云:人算不如天算,天算是云计算[IT168 资讯]4月2日,马云在深圳IT领袖峰会发表主题演讲,再度谈论对云计算的观点:人算不如天算,天算就是云计算.监管要从人算变成计算,要更加科学.要更加着眼未来. 马云在演讲中说,我们不能一方面说转型升级,一方面还要对落后产业进行保护.互联网经济也未必活的好,除了BAT以外,请大家告诉我有哪几家企业利润很好的?BAT为什么利润好,不仅仅因为他们走得早,而是每家企业都有自己的核心竞争力,核心的技术,腾讯的技术,百度的技术,阿里的技术,技术才是

javascript面向对象笔记之理解对象

0×00背景 我们知道面向对象的语言有一个标志就是有类的概念,通过类可以创建多个具有相同属性和方法的对象.但是ECMAScript中没有类的概念,所以它的对象和其他基于类的语言中的对象有点不同,它是基于原型的面向对象.ECMA-262把对象定义为"无序属性的集合,其属性可以包含基本值,对象或者函数".每个对象都是基于一个引用类型创建的,这个引用类型可以是原生的引用类型,也可以是自定义的类型. 我们先用最简单的方式创建一个对象  代码如下 复制代码 var person = new Ob

javascript 面向对象编程 万物皆对象_js面向对象

javascript和java.C#等语言一样也具有面向对象的一些特征,但细比较的时候,会发现这些特征并不是真正的面向对象,很多地方都是利用对象本身来模拟面向对象,所以认为javascript不能算是面向对象编程语言,而是基于对象的语言. 在javascript中真的是万物皆对象,new出来的东西是对象,方法是对象,连类也都是对象.下面分别来看一下对象.方法和类的对象特征. 1.拿内置的Date来看一下吧 复制代码 代码如下: var time = new Date(); var timeStr

IT经理世界:曹国伟的算与不算

"精明强势"的曹国伟懂得"什么时候该算,什么时候不该算",对"算与不算"尺度的精准把握让他在新浪打拼10年后,最终赢得了对这家公司的控制. 作者:张晓洁 9月28日,44岁的曹国伟和新浪管理层以1.8亿美元获得新浪9.41%的股权,成为新浪最大的股东.这位在新浪打拼了10年的"元老",是执掌新浪时间最久的强势CEO,他的职业经理人生涯也进入了一个企业家的新阶段. 互联网领域的富豪之中,丁磊.张朝阳.史玉柱.马化腾.李彦宏等人都