最近学分析,感觉4年工作经验白做了,很迷惑啊比如User类
我倾向于 User类继承于Person类,我老师的意思 User类包含一个基本属性 person基本信息
Login方法,我倾向于Login方法写到行为层 ,因为login方法与外界进行了交互,还要考虑外界的数据结构和组件迁移老师的意思login放到user类上, 或者user类上面多一个Account属性,包括 username password 和 login方法,原因是login上用到user类的属性最多,所以应该放在 user类上(谁的属性多,谁的数据全就放到谁上面,分析的时候不要考虑如何实现)等等等等问了几个程序员,大部分同意我的意见,唉迷惑啊,我也说服不了我老师,老师是大学的老师,也在外面公司任职,这两个月指导我学分析,我们现在感觉一般都是把 实体 行为 业务 分开,因为不分开很多时候会产生混乱,重复引用等到底是社会毒害了我们,还是.net毒害了我们, .net的技术是不是太多了,新技术是不是来得太快了,很多东西都是肤浅的学一下,你真正理解了吗?工作了4年,很多东西还没一个大学生理解的深刻,我好混乱
我倾向于 User类继承于Person类,我老师的意思 User类包含一个基本属性 person基本信息
Login方法,我倾向于Login方法写到行为层 ,因为login方法与外界进行了交互,还要考虑外界的数据结构和组件迁移老师的意思login放到user类上, 或者user类上面多一个Account属性,包括 username password 和 login方法,原因是login上用到user类的属性最多,所以应该放在 user类上(谁的属性多,谁的数据全就放到谁上面,分析的时候不要考虑如何实现)等等等等问了几个程序员,大部分同意我的意见,唉迷惑啊,我也说服不了我老师,老师是大学的老师,也在外面公司任职,这两个月指导我学分析,我们现在感觉一般都是把 实体 行为 业务 分开,因为不分开很多时候会产生混乱,重复引用等到底是社会毒害了我们,还是.net毒害了我们, .net的技术是不是太多了,新技术是不是来得太快了,很多东西都是肤浅的学一下,你真正理解了吗?工作了4年,很多东西还没一个大学生理解的深刻,我好混乱
解决方案 »
- 在.net中找不到资源文件properties\resources.resx
- winform 到底要把资源文件放在Debug下还是根目录?
- .net 新手问题
- 无法打开D:\visual studio 2005\SDK\v2.0\bin\sdkvars.bat进行写操作?
- 怎么把openfiledialog的对话框显示在form里
- picturebox 边界问题
- 请高手忙办把VB代码改成C#
- 急,word表格单元格内容复制
- 我想让他点关闭C#程序后自动弹出一个窗体,窗体显示10秒倒数,到0时关闭在自动弹出一个网页 如何实现
- 高手们,帮忙解决下,关于.net中的类的作用,,肯定对于你们来说很简单,但我现在有点不明白,谢谢
- C#日历控件
- CKEditor取值
如果user类是所有用户的基类,而且必须通过login才能登陆的话,老师的做法未尝不可
对于user 继承于 人 这种思路, 局限了当前系统的所有user必须是“人”。
如果将“人”作为user一个属性, 就适用于User不一定是“人”的情况。所以我觉得你们老师考虑的是系统能更好扩展的问题。一个是继承关系,一个是组合关系。 user由人来组合的时候,它的范围更广泛些。对于login方法而言,在分析阶段确实可以放在user上面,“不要考虑如何实现”,分析阶段的视角跟实现阶段是不同的。个人认为。 实现阶段就不会放到user了,user到实现阶段就是个实体类,而login方法会存在于某个接口或者服务中。
因为可能以后别的地方要用Login,也可能因为其他的原因,反正Login是不应该写到哪一个固定的类里
不知道你是否同意我的观点呢? 如果同意往下看其次你的Login正常应该是 Login(userName,passWord)
那么User类 他肯定会有一个登陆的动作,用户嘛,如果他不用登陆何来的个人信息呢?
所以你应该在User类里加一个Login的方法,而他这个方法实现的就是之前写好的接口内提供的Login Method
简化的来说就是 有一个统一实现方法的接口,其他类调用的是这个接口,而调用这个接口的地方也要想好
不能到处都调,因为登陆只可能存在于User里的动作,目前看应该是。。
还是你的老师说User里应该实现一个Login你反对?如果是前者,我觉得你应该据理力争一下,每个人想法不同,写到外面可能以后还有用处,也可能修改针对数据库访问的方法时便于查询等等因素吧
如果是后者,我觉得老师的观点是正确的
这点老师说的很对,你可以模仿测试用例一样
Class User
{
public .... Login()
{
Interface.Login(_username,_password);
}
}这样省得你到处去找用户名,密码等信息
你只要走到哪里带着User类就好了,其他的你就不用操心了,这个观点非常正确
例如:用户可能不是一个人,而是一个企业,那么我们就不能继承自Person,但用户一定要有个联系人,所以应该有个person。这样就解决的企业用户和个人用户的矛盾。
Login(userName,passWord) 其实这已经可以说不是面向对象了 呵呵,我们的缺点就是把技术和实现看得太重要了,往往分析事务的本质才是最重要的
呵呵,就是考虑数据迁移,复用的原因才会这么复杂的,你想,万一我另一个程序的数据存储结构不一样,或者登录逻辑不一样,那么user 上面写一个 login方法可能就不好了我其实基本理解了,分析的时候 login应该是属于user的一个方法,但是具体实现的时候,不一定要写在user上面,最好也不写到user上面,需求就是需求,不管怎么实现
不管怎样分层还是为工作或者团队工作更方便,更有利对象化,模块化。
何必太拘谨于,框架里的类。
再说 他们那个年代 面向对象 概念比较模糊(oop)
定义user是人,而且是一对一聚合
我个人有个想法,不能一个人有多个帐户吗??
。看需求,我们上一个公司的设计模式是一个Account对多个User
根据职责明确,职责单一的原则,Person用于人员的基本信息,属于不经常修改的内容,修改人员为管理人员,包括添加人员、修改人员基本信息,删除人员基本信息。
User用于用户的信息,包括登录信息,包括用户名、密码,这个是由用户自己更改的。
用户的操作,这个与用户是一对多的关系,应该另外有实体。
2 没有太明白
user类一般用做实体类,业务逻辑不放在此层。
他就放属性和get set方法
我也基本是都是这么用的,user只是个实体类