面向对象的三大特性

大家都知道面向对象的编程有封装、继承、多态三大特性,而我们在做一般的数据库项目的时候,感觉好少用到继承和多态的思想,本文将讲述,如何在一般的数据库管理系统上用上这些特性,使你的代码更具有面向对象的特性.

一、封装

  封装的定义:

  每个对象都包含了他能进行操作所需要的所有信息,因此对象不必依靠其他的对象来完成自己的操作,这样的特性叫封装。

   封装在简单数据库项目中的例子: 

public class Class1
    {
        private string myConStr;
        public Class1()
        {
        }
        public string MyConStr
        {
            get { return myConStr; }
            set { myConStr = value; }
        }


        public virtual void  dboperate()
        {

        }
    }

 

上面就是一个封装好了的简单的类

二、继承

继承代表了一种“is-a”的关系,个人觉的继承的最大好处是少些好多的代码及多态功能

例子:

    public class Class2 : Class1
    {
        private SqlConnection myCon;
        private SqlCommand myCom;
        private SqlDataReader myReader;
        public Class2(string str):base()
        {
            base.MyConStr = str;
        }
        public override void  dboperate()
        {

            myCon = new SqlConnection(base.MyConStr);
            myCon.Open();
            myCom = new SqlCommand("insert into table1(NO,NAME,SEX) VALUES('001','BIIL','MAN')", myCon);
            myReader =  myCom.ExecuteNonQuery();       
        }

    }

这里用重载的方法少写了从父类继承过来的代码。

三、多态

定义:是允许将父对象设置成为和一个和多个它的子对象相等的技术,比如Parent=Child 赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。也就是说,父亲的行为像儿子,而不是儿子的行为像父亲。 

在定义一个跟新数据库的类:

   public class Class3:Class1
    {
        private SqlConnection myCon;
        private SqlCommand myCom;
        public Class3(string str):base()
        {
            base.MyConStr = str;
        }
        public override void  dboperate()
        {

            myCon = new SqlConnection(base.MyConStr);
            myCon.Open();
            myCom = new SqlCommand("update table1 set SEX='WOMAN'where ID='001'", myCon);
           myCom.ExecuteNonQuery();
       
        }
    }

多态的实现:

 string connstring = "Data Source=tty1;Initial Catalog=Northwind;Integrated Security=True";

  Class1 pclass1 = new Class2(connstring);//Parent=Child 
  Class1 pclass2 = new Class3(connstring);//Parent=Child 
  pclass1.dboperate();//执行Class2的dboperate()方法
  pclass2.dboperate();//执行Class3的dboperate()方法

四、结尾:

到现在我们已经实现了数据操作的面向对象的三大特性,但是,从上面的例子却不敢恭维,从继承的角度来看,并不成功,可以考虑将 SqlConnection myCon, SqlCommand myCom放在父类中,修改之后的代码如下:

//父类Class1

   public class Class1
    {
        private string myConStr;
       protected SqlConnection myCon;
       protected SqlCommand myCom;
        public Class1()
        {
        }
        public string MyConStr
        {
            get { return myConStr; }
            set { myConStr = value; }
        }


        public virtual void  dboperate()
        {

        }
    }

//子类Class2

    public class Class2 : Class1
    {
      
        public Class2(string str):base()
        {
            base.MyConStr = str;
        }
        public override void  dboperate()
        {

            myCon = new SqlConnection(base.MyConStr);
            myCon.Open();
            myCom = new SqlCommand("insert into table1(NO,NAME,SEX) VALUES('001','BIIL','MAN')", myCon);
           myCom.ExecuteNonQuery();

         
        }

    }

//子类Class3

    public class Class3:Class1
    {

        public Class3(string str):base()
        {
            base.MyConStr = str;
        }
        public override void  dboperate()
        {
          
            myCon = new SqlConnection(base.MyConStr);
            myCon.Open();
            myCom = new SqlCommand("update table1 set SEX='WOMAN'where ID='001'", myCon);
           myCom.ExecuteNonQuery();
       
        }
    }

 //操作

   string connstring = "Data Source=tty1;Initial Catalog=Northwind;Integrated Security=True";
            Class1 pclass1 = new Class2(connstring);
            Class1 pclass2 = new Class3(connstring);
            pclass1.dboperate();
            pclass2.dboperate();



(全文完)


以下为广告部分

您部署的HTTPS网站安全吗?

如果您想看下您的网站HTTPS部署的是否安全,花1分钟时间来 myssl.com 检测以下吧。让您的HTTPS网站变得更安全!

SSL检测评估

快速了解HTTPS网站安全情况。

安全评级(A+、A、A-...)、行业合规检测、证书信息查看、证书链信息以及补完、服务器套件信息、证书兼容性检测等。

SSL证书工具

安装部署SSL证书变得更方便。

SSL证书内容查看、SSL证书格式转换、CSR在线生成、SSL私钥加解密、CAA检测等。

SSL漏洞检测

让服务器远离SSL证书漏洞侵扰

TLS ROBOT漏洞检测、心血漏洞检测、FREAK Attack漏洞检测、SSL Poodle漏洞检测、CCS注入漏洞检测。

原文地址:https://www.cnblogs.com/zhuqil/p/1271565.html