首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

有必要给菜鸟解决下“月经题”,散分

2013-09-07 
有必要给初学者解决下“月经题”,散分!都是关于面向对象的,http://bbs.csdn.net/topics/390528973http://bbs

有必要给初学者解决下“月经题”,散分!
都是关于面向对象的,http://bbs.csdn.net/topics/390528973   http://bbs.csdn.net/topics/390536618
花了点时间给两个楼主解答,同时希望初学者少走弯路,不要在为“面向对象”而面向对象,要提前理解JavaBean+DAO的模式(简单的说,就是把数据和方法完全分离;如果实在还不理解,就回忆下C语言的"结构体+函数式"编程的思想,面向过程你能理解吧,换了个更简单的面向对象怎么就纠结了?),简化今后的编程,加快JavaSE学习的速度。
为什么现在有泛型,为什么有反射,为什么有纯POJO?这些思想就是要让你的“数据”和“操作”完全分离;类似于“冰箱具有--开打、关闭方法,汽车具有--行驶、刹车方法”的代码绝对绝对不能再出现在Pojo当中了!
以后谁再写以下这种2B代码你们项目经理跟你没完!



package beantest.bean;
 
/**
 *爱好
 *
 */
public class Hobby {
    /**
     * 主键--在数据库中的下标
     */
    private int id;
/**
 * 名称
 */
private String name;
public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}
public String getName() {
    return name;


}
public void setName(String name) {
    this.name = name;
}
public Hobby(int id, String name) {
    super();
    this.id = id;
    this.name = name;
}
@Override
public String toString() {
    return "Hobby [id=" + id + ", name=" + name + "]";
}
 
}



package beantest.bean;
/**
 *  职业
 */
public class Job {
     
/**
 *  主键--在数据库中的下标
 */
private int id;
 
/**
 * 名称
 */
private String name;
public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public Job(int id, String name) {
    super();
    this.id = id;
    this.name = name;
}
public Job() {
    super();
}
@Override
public String toString() {
    return "Job [id=" + id + ", name=" + name + "]";
}
 
}


package beantest.bean;
 
import java.util.List;
/**
 *  人
 */
public class Person {
     
/**
 *  主键--在数据库中的下标
 */
private int id;
/**
 * 姓名
 */
private String name;
/**
 * 性别 1-男  2-女
 */
private int male;
/**
 * 年龄
 */
private int age;
/**
 * 是否在世  
 */
private boolean isLive;
/**
 * 父亲id引用  -1表示不存在
 */
private int fatherId;
/**
 * 母亲id引用  -1表示不存在
 */
private int motherId;
/**
 * 爱人的id引用 -1表示不存在
 */
private int loverId;
/**
 * 职业的id引用  -1表示不存在
 */


private int jobId;
/**
 * 由于可以有多个爱好,所以一个人拥有爱好ID的集合
 */
private List<Integer> hobbyList;
public List<Integer> getHobbyList() {
    return hobbyList;
}
public void setHobbyList(List<Integer> hobbyList) {
    this.hobbyList = hobbyList;
}
public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public int getMale() {
    return male;
}
public void setMale(int male) {
    this.male = male;
}
public int getAge() {
    return age;
}
public void setAge(int age) {
    this.age = age;
}
public boolean isLive() {
    return isLive;
}
public void setLive(boolean isLive) {
    this.isLive = isLive;
}
public int getFatherId() {
    return fatherId;
}
public void setFatherId(int fatherId) {
    this.fatherId = fatherId;
}
public int getMotherId() {
    return motherId;
}
public void setMotherId(int motherId) {
    this.motherId = motherId;
}
public int getLoverId() {
    return loverId;
}
public void setLoverId(int loverId) {
    this.loverId = loverId;
}
 
public int getJobId() {
    return jobId;
}
public void setJobId(int jobId) {
    this.jobId = jobId;
}
public Person() {
    super();
}
public Person(int id, String name, int male, int age, boolean isLive,
        int fatherId, int motherId, int loverId, int jobId) {
    super();
    this.id = id;
    this.name = name;
    this.male = male;


    this.age = age;
    this.isLive = isLive;
    this.fatherId = fatherId;
    this.motherId = motherId;
    this.loverId = loverId;
    this.jobId = jobId;
}
@Override
public String toString() {
    return "Person [id=" + id + ", name=" + name + ", male=" + male + ", age="
            + age + ", isLive=" + isLive + ", fatherId=" + fatherId
            + ", motherId=" + motherId + ", loverId=" + loverId + ", jobId="
            + jobId + "]";
}
 
 
}



package beantest.dao;
 
import java.util.List;
 
/**
 *单表 CRUD的类
 */
public class BaseDao<T> {
/**
 * 操作哪个表
 */
private List<T> table;
 
public BaseDao(List<T> table) {
    super();
    this.table = table;
}
/**
 * 插入
 */
public void insert(T t){
    table.add(t);
}
/**
 * 查询
 */
public T query(int id){
    return table.get(id);
}
 
/**
 * 修改
 */
public void update(T t,int id){
table.set(id, t);
}
/**
 * 删除
 */
public T delete(int id){
    return table.remove(id);
}
}


package beantest.db;
 
import java.util.ArrayList;
import java.util.List;
 
import beantest.bean.Hobby;
import beantest.bean.Job;
import beantest.bean.Person;
import beantest.util.Dectionary;
 
/**
 *数据库,每个数据库的记录的id从0开始
 *
 */
public class DataBase {
public static List<Person> personDb=new ArrayList<Person>();
public static List<Job> jobDb=new ArrayList<Job>();
public static List<Hobby> hobbyDb=new ArrayList<Hobby>();


//初始化数据库并设置关联
static{
    //初始化person数据库
    Person p0=new Person(0, "老王的父亲", Dectionary.Male, 60, Dectionary.Live, -1, -1, 1,-1);
    Person p1=new Person(1, "老王的母亲", Dectionary.Female, 60, Dectionary.Live, -1, -1, 0,-1);
     
    Person p2=new Person(2, "老李的父亲", Dectionary.Male, 60, Dectionary.Live, -1, -1, 3,-1);
    Person p3=new Person(3, "老李的父亲",  Dectionary.Female, 60, Dectionary.Live, -1, -1, 2,-1);
     
    Person p4=new Person(4, "老王", Dectionary.Male, 40, Dectionary.Live, 0, 1, 5,0);
    Person p5=new Person(5, "老李", Dectionary.Female, 40, Dectionary.Live, 2, 3, 4,1);
     
    Person p6=new Person(6, "儿子", Dectionary.Male, 15, Dectionary.Live, 4, 5, -1, 2);
    personDb.add(p0);    personDb.add(p1);    personDb.add(p2);    personDb.add(p3);
    personDb.add(p4);    personDb.add(p5);    personDb.add(p6);   
    //初始化job数据库
    Job job0=new Job(0, "教师");
    Job job1=new Job(1, "会计");
    Job job2=new Job(2, "上中学");
    jobDb.add(job0);jobDb.add(job1);jobDb.add(job2);
     
    //初始化hobby数据库
    Hobby h0=new Hobby(0, "太极拳");
    Hobby h1=new Hobby(0, "兼职讲课");
    hobbyDb.add(h0);
    hobbyDb.add(h1);
     
    //设置爱好
    List<Integer> wangList=new ArrayList<Integer>();
    List<Integer> liList=new ArrayList<Integer>();
    wangList.add(0);
    liList.add(1);
    p0.setHobbyList(wangList);
    p1.setHobbyList(liList);
}
}


Java OOP?月经题 初学者?面向对象

分享到:
[解决办法]
有必要给菜鸟解决下“月经题”,散分
[解决办法]
有必要给菜鸟解决下“月经题”,散分
顶楼主
顺便接点分
[解决办法]
太好了,顶完再细看
[解决办法]
收藏之,十分感谢!
[解决办法]
原来是这样有必要给菜鸟解决下“月经题”,散分
[解决办法]
 对照你的看了一下musicstore:

1.logic分成了3个包:admin, cart, catalog

2.数据库只有一个包:data
   其中 UserDB, ProductDB 等属于dao; ConnectionPool,DBUtil,SQLUtil等属于db;
   
3.初始化数据库是用sql文件生成的,
 
[解决办法]
有必要给菜鸟解决下“月经题”,散分
[解决办法]
楼主这是要讲明白什么吗?
[解决办法]
有必要给菜鸟解决下“月经题”,散分
[解决办法]
加快进度:我认可这种态度。看的多了,有些东西自然而然就懂了。而且可以知道哪些是最新的正在应用的技术
[解决办法]


  能讲讲开发的顺序吗?先搞哪个包?
[解决办法]
一点改动:



public  void personDoSth(int personId ){
    Person p=personDao.query(personId);
    
    
    for ( Integer i: p.getHobbyList()){
     Hobby h=hobbyDao.query(i);
         System.out.println(p.getName()+ " like"+ h.getName());
    }
       
}



lc.personDoSth(4);
lc.personDoSth(5);

     

 Hobby h0=new Hobby(0, " swiming");


    Hobby h1=new Hobby(1, " part-time teacher");
    Hobby h2=new Hobby(2, " baseball");
    Hobby h3=new Hobby(3, " hiking");
    hobbyDb.add(h0);
    hobbyDb.add(h1);
    hobbyDb.add(h2);
    hobbyDb.add(h3);
      
 
    List<Integer> wangList=new ArrayList<Integer>();
    List<Integer> liList=new ArrayList<Integer>();
    wangList.add(0);
    liList.add(0);
    liList.add(1);
    liList.add(2);
    
    p4.setHobbyList(wangList);
    p5.setHobbyList(liList);
    


[解决办法]
OOA&D...
[解决办法]
有必要给菜鸟解决下“月经题”,散分
[解决办法]
有必要给菜鸟解决下“月经题”,散分
[解决办法]
楼主不错,鼓励一下 有必要给菜鸟解决下“月经题”,散分
[解决办法]
好详细,不错,涨姿势了。
[解决办法]
有必要给菜鸟解决下“月经题”,散分
[解决办法]
有必要给菜鸟解决下“月经题”,散分总结得不错。。
[解决办法]
顶一个!对初学者会有帮助的,个人感觉练习最重要。不错的一个帖子!
[解决办法]
[quote ]
 
正常的开发过程中, 

 太感谢了,对照我的musicStore,很有感觉了。

我的musicStore,logic 好象都是用servlet写的啊?
[解决办法]
引用:
Quote: 引用:

[quote ]
 
正常的开发过程中, 

 太感谢了,对照我的musicStore,很有感觉了。

我的musicStore,logic 好象都是用servlet写的啊?

如果项目很赶时间,可以放在servlet中,如果是比较规范的项目,就尽量让servlet控制纯粹的跳转;比如最简单的“登录”程序,可以在servlet中这样写:

String userName=request.getParameter("userName");


String password=request.getParameter("password");
UserInfo userInfo=userInfologic.login(userName,password);


UserInfoLogic中这样写:

[解决办法]
引用:
写段代码贝


只是一个文件组织的方法,可以考虑一下~至于代码,我上面已经说清楚我的思路了啊~

Logic中,

public UserInfo login(String userName,String password){
    UserInfo userInfo=userInfoDao.queryByUserName(userName);
    // 执行密码验证
    checkPassword(password, userInfo.getPassword());
    return userInfo;
}

[解决办法]
支持这样的帖子
[解决办法]
这种开发模式对我一个初学者来说很长见识啊,,楼主能不能把工程文件发给我啊.
------解决方案--------------------


说得很对。受教了
[解决办法]
楼主太强了 非常感谢
[解决办法]


[解决办法]


[解决办法]
写的不错,顶起
[解决办法]
不错,思路很好
[解决办法]
有必要给菜鸟解决下“月经题”,散分
[解决办法]
很不错 看看
[解决办法]
你是把程序设计从阳春白雪拖回到下里巴人了。。企业里的程序设计确实就那么点东西。
[解决办法]
支持!。 越纠结 只会越来越纠结, 纠结到不能再纠结, 那么恭喜你, 你终于理解了!。 还是要跟进度
[解决办法]
还没看,觉得有点高深,但应该会很有用的样子,csdn是个好地方,希望找到自己想要的东西
[解决办法]
对LZ只有一个字,通透!!!
[解决办法]
很好,很强大,值得研究,琢磨,品味。谢谢
[解决办法]
很不错啊。。。。有必要给菜鸟解决下“月经题”,散分
[解决办法]
很好的资料,值得收藏。
[解决办法]
好东西啊,值得收藏
[解决办法]
很好,不错!
[解决办法]
有必要给菜鸟解决下“月经题”,散分
[解决办法]
好东西,对新手很有用处
[解决办法]
lz思路很清晰,对企业级开发的分层思想感觉很有理解 
[解决办法]
顶楼主,非常棒的讲解。
[解决办法]
屌!进度请跟上!!!
[解决办法]
接分。。。
什么叫月经题
[解决办法]
楼主,为毛我看到有些教材上面说DAO是一个接口呢?还要,vo也是表示的bean吧?
[解决办法]
lz的那个设计好厉害哦,为什么我读了那段吗描述却是一片空白呢?请问lz是如何思考 如何达到这种境界的!
[解决办法]
大神 膜拜 先收藏  
[解决办法]
学习一下,标记。
------解决方案--------------------


有必要给菜鸟解决下“月经题”,散分
[解决办法]
Person p3=new Person(3, "老李的父亲",  Dectionary.Female, 60, Dectionary.Live, -1, -1, 2,-1);
此处是不是“父亲”应该改为“母亲”,不小心看到了,就提一下,望LZ见谅哈!楼主很给力!!!
[解决办法]
我是来接分的有必要给菜鸟解决下“月经题”,散分
[解决办法]
有必要给菜鸟解决下“月经题”,散分
[解决办法]
很好的东西,留着回去慢慢看
[解决办法]
学习学习一下。有必要给菜鸟解决下“月经题”,散分
[解决办法]
很好的东西啊,学习了
[解决办法]
我落后了,看来要更新一下自己的知识结构了。
[解决办法]


没这样干的吧?
[解决办法]
新手学习了有必要给菜鸟解决下“月经题”,散分
[解决办法]
JavaBean==POJO==Entity  ???
[解决办法]
why use super()?



public Hobby(int id, String name) {
    super();
    this.id = id;
    this.name = name;
}




[解决办法]
学习了 、、、、
[解决办法]
虽然我是菜鸟,但我不认为为了求快而忽略基础,楼主也是过来人,学会封装,继承,多态,对理解抽象类,接口,以及面向对象的设计思路和模式有着根本性的意义,对理解jdk的API也有很大帮助,这也必将决定你以后在技术上能走多远。如果我们是为了企业而去学习快速的模式那和那些去做销售的有什么区别
[解决办法]
楼上有人super()这个都不明白,这就是java里子类构造函数调用父类构造函数的方法,即使不写的话也会隐含调用,如果他不学习继承,请他懂嘛?
[解决办法]
super: call a constructor or method of the superclass.

 我不至于连super都不懂吧?只是觉得没必要用

------解决方案--------------------


即使不写的话也会隐含调用?不懂
[解决办法]
一直以为自己不是初学者了,大量阅读后才发现还需要巩固啊~有必要给菜鸟解决下“月经题”,散分
[解决办法]

热点排行