OOP中扩展实体的应用

为什么要对实体扩展

原因

问题:查询所有的学生信息,同时包括:姓名、性别、年龄、学习的课程

分析:查询结果是属于多个不同实体对象的信息重组

当前问题:我们没有定义能够封装不同实体对象信息的实体类

结论

  1. 不可能根据用户查询的要求进行单独设计查询实体类
  2. 如果单独设计的实体类面对用户的不同需求,经不起考验

组合扩展实体

组合扩展实体的要求

组合扩展实体是为了满足用户查询而设计的实体类,一般由目前存在的业务实体类重新组合而成

封装组合扩展实体

 class StudentAddSubject
    {
        public Student ObjStudent { get; set; }
        public Subject ObjSubject { get; set; }
    }

使用组合扩展实体封装多个对象的信息

   public List<StudentAddSubject> GetStudentInforSub()
        {
            string sql = "SELECT ID,Name,Sex,Age,SubName FROM Student INNER JOIN Subject ON Student.SubID=Subject.SUBID ";
            SqlDataReader reader = SQLHelper.GetReader(sql);
            List<StudentAddSubject> list = new List<StudentAddSubject>();
            while (reader.Read())
            {
                StudentAddSubject stu = new StudentAddSubject();
                stu.ObjStudent = new Student()
                {
                    ID = Convert.ToInt32(reader["ID"]),
                    Name = reader["Name"].ToString(),
                    Sex = reader["Sex"].ToString(),
                    Age=Convert.ToInt32(reader["Age"])
                };
                stu.ObjSubject = new Subject()
                {
                    SubName = reader["SubName"].ToString()
                };
                list.Add(stu);
            }
            reader.Close();
            return list;
        }

简单扩展实体

简单扩展实体要求

主要通过继承定义扩展实体,继承原有实体对象,并扩展自己新加的属性

封装简单扩展实体

class TeacherInforSub:Teacher
    {
        public string SubName { get; set; }
    }
 public List<TeacherInforSub> GetTeacherInfors()
        {
            string sql = "SELECT ID,NAME,TEL,SubName FROM Teacher INNER JOIN Subject ON Teacher.SUBID=Subject.SUBID";
            SqlDataReader reader = SQLHelper.GetReader(sql);
            List<TeacherInforSub> list = new List<TeacherInforSub>();

            while (reader.Read())
            {
                TeacherInforSub teacherInfor = new TeacherInforSub()
                {
                    ID = Convert.ToInt32(reader["ID"]),
                    Name = reader["Name"].ToString(),
                    Tel = reader["TEL"].ToString(),
                    SubName = reader["SubName"].ToString()
                };
                list.Add(teacherInfor);
            }
            reader.Close();
            return list;
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值