zoukankan      html  css  js  c++  java
  • 什么是面向对象以及实现类的封装

    一、 面向对象的编程思想

    a) 面向过程的编程思想:自顶向下,逐步细化

    b) 面向对象的编程思想:就是在编程的时候尽可能的模拟现实世界

    1. 分析哪些功能(动作)是由哪些实体发出的
    2. 定义这些实体,为其增加相应的属性和功能
    3. 让实体执行这些功能或动作

    c) 从面向过程到面向对象的思想的转变:面向过程是对功能进行封装(函数),面向对象是对完成这些功能背后的主体进行封装

    二、 面向对象的基本概念

    a) 对象:计算机中的一个对象就对应着现实世界中的一个实体

    b) 我们是采用属性(变量)来保存数据,采用方法(函数)来管理数据

    c) 类的定义:要想得到对象,必须先有类,是通过关键字class来定义的

    d) 类的成员:属性(类变量),方法(类函数)、常量(类常量)

    e) 利用类得到对象:通过关键字new

    f) 对象成员访问符:->   

    g) instanceof运算符:双目运算符,左边是一个对象名称,右边是一个类的名称,作用是判断左边的对象是否是右边的类的一个实例,返回一个布尔值!

    三、 方法中$this关键字:是一个伪对象,哪个对象调用它,它就属于谁!

    四、 构造方法:__construct(),在实例化一个对象的时候,自动调用的!一般都是利用构造方法完成对对象的初始化工作

    五、 析构方法:__destruct(),在一个对象消失的时候,自动调用的!一般都是利用析构方法释放对象额外的资源!一个对象消失一般有三种情况:脚本运行结束、直接unset掉,将保存对象的变量重新赋值!

    六、 对象的传值与克隆:clone__clone

    七、 MySQLDB类的封装

     

    class MYSLQDB{
    //类属性
    public $host; //主机地址
    public $port; //端口号
    public $user; //用户名
    public $pass; //用户密码
    public $charset; //设置字符集
    public $dbname; //选择数据库
    public $link; //保存连接资源

     

    //创建构造方法
    public function __construct($arr){
    //初始化属性的值
    $this->host = isset($arr['host']) ? $arr['host']:'localhost';
    $this->port = isset($arr['port']) ? $arr['port']:'3306';
    $this->user = isset($arr['user']) ? $arr['user']:'root';
    $this->pass = isset($arr['pass']) ? $arr['pass']:'';
    $this->charset = isset($arr['charset']) ? $arr['charset']:'utf8';
    $this->dbname = isset($arr['dbname']) ? $arr['dbname']:'';

     

    //连接数据库三部曲
    //1,连接数据库
    $this->my_connect();
    //2,设置字符集
    $this->my_charset();
    //3,选择数据库
    $this->my_dbname();

     

    }

     

    //定义一个连接数据库的方法
    public function my_connect(){
    if($link_s = @mysql_connect('$this->host:$this->port',$this->user,$this->pass)){
    //连接成功
    $this->link = $link_s;
    }else{
    echo '数据库连接失败<br />';
    echo '错误代码:',mysql_errno(),'<br />';
    echo '错误信息:',mysql_error(),'<br />';
    die;
    }
    }

     

    //定义一个设置字符集的方法
    public function my_charset(){
    $sql = "set names $this->charset";
    $this->my_query($sql);
    }

     

    //定义选择数据库
    public function my_dbname(){
    $sql = "use $this->dbname";
    $this->my_query($sql);
    }

     

    //定义sql执行语句
    public function my_query($sql){
    $result = @mysql_query($sql);
    if($result){
    return $result;
    }else{
    echo 'sql语句执行失败<br />';
    echo '错误代码:',mysql_errno(),'<br />';
    echo '错误信息:',mysql_error(),'<br />';
    die;
    }
    }

     

    //定义一个析构方法
    public function __destruct(){
    //释放连接资源
    @mysql_close($this->link);
    }
    }

     

  • 相关阅读:
    简单爬取腾讯新闻内容方法封装
    Python正则表达式函数
    Escape(反思与总结)
    springboot中使用mybatis
    解决 java.lang.UnsatisfiedLinkError:no ** in java.library.path in java.library.path 的异常
    解决 fatal error: jni_md.h: No such file or directory #include “jni_md.h”
    Git troubleshooting
    Java8 新特性2——强大的Stream API
    Java8 新特性1—— Lambda表达式、内置函数式接口、方法引用与构造器引用
    搭建Linux(Ubuntu)系统下的Differential Datalog运行环境
  • 原文地址:https://www.cnblogs.com/zzmgg/p/6150708.html
Copyright © 2011-2022 走看看