黑马程序员技术交流社区

标题: 关于多态的问题 [打印本页]

作者: 胡卿    时间: 2012-6-11 21:57
标题: 关于多态的问题
本帖最后由 胡卿 于 2012-6-11 21:58 编辑
  1. /*
  2. 需求:数据库的操作
  3. 1.连接数据库  JBDC Hibernate
  4. 2.操作数据库  create upate delete
  5. 3.关闭数据库连接
  6. */
  7. class User
  8. {
  9.    public void InfoOperate(UserInfoDao ui)
  10.    {
  11.        ui.add(user);
  12.        ui.delete(user);
  13.    }
  14. }
  15. interface UserInfoDao//Dao:data access object
  16. {
  17.      public void add(User user);
  18.      public void delete(User user);
  19. }

  20. class UserInfoJBDC implements UserInfoDao
  21. {
  22.     public void add(User user)
  23.     {
  24.         //1.连接数据库   2. 使用sql添加语句添加数据  3.关闭连接
  25.         System.out.println("JBDC add data");
  26.     }
  27.    
  28.     public void delete(User user)
  29.     {
  30.         //1.连接数据库   2. 使用sql添加语句删除数据  3.关闭连接
  31.         System.out.println("JBDC delete data");
  32.     }
  33. }
  34. class UserInfoHibernate implements UserInfoDao
  35. {
  36.     public void add(User user)
  37.     {
  38.         //1.Hibernate连接数据库   2. 使用sql添加语句添加数据  3.关闭连接
  39.         System.out.println("Hibernate add data");
  40.     }
  41.    
  42.     public void delete(User user)
  43.     {
  44.         //1.Hibernate连接数据库   2. 使用sql添加语句删除数据  3.关闭连接
  45.         System.out.println("Hibernate delete data");
  46.     }
  47. }
  48. class DBoperate
  49. {
  50.      public static void main(String[] args)
  51.      {
  52.      User  u= new User();
  53.      u.InfoOperate(new UserInfoJBDC());
  54.      
  55.      }
  56. }
复制代码
DuoTai2.java:11: 找不到符号
符号: 变量 user
位置: 类 User
       ui.add(user);
              ^
DuoTai2.java:12: 找不到符号
符号: 变量 user
位置: 类 User
       ui.delete(user);

这问题怎么解决
找不到变量,但是我真的不知道该怎么把这个变量定义进去
作者: 宋浩    时间: 2012-6-11 22:09
个人觉得你那个User类里面添加或者删除一个User对象不太合适,为什么不做一个UserManger类呢??在UserManager类中保存一个User对象,那么在里面做增、删、改、查逻辑也很清晰。。如果非要这样做,那你可以ui.add(user)里面写上this不知道行不行。当然这样做也不太好的,看着都会觉得挺变扭的!!
作者: 杨天皓    时间: 2012-6-11 22:21
本帖最后由 杨天皓 于 2012-6-11 23:37 编辑

我也觉的楼主这个代码的思路有点混乱。

你的增删改查怎么能全部放在User类的一个方法里面,难道你增加了用户就马上把他删了?
首先一个javaBean存User的属性
然后一个UserOperateImpl实现UserOperate里面有增删改查并要将User传递进去,然后每一增删改查的方法里面,再调用UserInfoDaoImpl实现UserInfoDao.
你在主函数里面调用增删改查的时候,在把User传进去
作者: 葛奎    时间: 2012-6-11 23:06
/*
需求:数据库的操作
1.连接数据库  JBDC Hibernate
2.操作数据库  create upate delete
3.关闭数据库连接
*/
class User
{
   public void InfoOperate(UserInfoDao ui)
   {
       ui.add();
       ui.delete();
   }
}
interface UserInfoDao//Dao:data access object
{
     public void add();
     public void delete();//这里面你没有必要再给它进行传参了,因为在主函数中 User  u= new User();
                                                                        //已经告诉你了是user在操作数据库了,你就不用在函数中传user了,不符合逻辑
                                                                //把这两个函数定义成空参数类型,这样就可以了
                                                                //然后把下面的代码全部定义成空参

}

class UserInfoJBDC implements UserInfoDao
{
    public void add()
    {
        //1.连接数据库   2. 使用sql添加语句添加数据  3.关闭连接
        System.out.println("JBDC add data");
    }
   
    public void delete()
    {
        //1.连接数据库   2. 使用sql添加语句删除数据  3.关闭连接
        System.out.println("JBDC delete data");
    }
}
class UserInfoHibernate implements UserInfoDao
{
    public void add()
    {
        //1.Hibernate连接数据库   2. 使用sql添加语句添加数据  3.关闭连接
        System.out.println("Hibernate add data");
    }
   
    public void delete()
    {
        //1.Hibernate连接数据库   2. 使用sql添加语句删除数据  3.关闭连接
        System.out.println("Hibernate delete data");
    }
}
class Test9
{
     public static void main(String[] args)
     {
     User  u= new User();
     u.InfoOperate(new UserInfoJBDC());
     
     }
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2