面向对象与面向过程有什么区别

s200612321 2011-10-19 02:10:07
面向对象与面向过程有什么区别:
在mysqli的扩展库里,既支持面向对象又支持面向过程,但是老师告诉我,最好使用面向对象的方式编程,对于新手的我来说,很是不理解。
在PHP文档里面,关于mysqli的介绍中,文档既写出了使用面向对象编程的实例,也写出了面向过程编程的实例,我比较了一下,发现两者没有多大区别。
举例说明一下,我们用语句从数据库里提取一段记录,
这是文档中mysqli::query中面向对象风格的实例
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
}

/* Create table doesn't return a resultset */
if ($mysqli->query("CREATE TEMPORARY TABLE myCity LIKE City") === TRUE) {
printf("Table myCity successfully created.\n");
}

/* Select queries return a resultset */
if ($result = $mysqli->query("SELECT Name FROM City LIMIT 10")) {
printf("Select returned %d rows.\n", $result->num_rows);

/* free result set */
$result->close();
}

/* If we have to retrieve large amount of data we use MYSQLI_USE_RESULT */
if ($result = $mysqli->query("SELECT * FROM City", MYSQLI_USE_RESULT)) {

/* Note, that we can't execute any functions which interact with the
server until result set was closed. All calls will return an
'out of sync' error */
if (!$mysqli->query("SET @a:='this will not work'")) {
printf("Error: %s\n", $mysqli->error);
}
$result->close();
}

$mysqli->close();
?>

这是文档中mysqli::query中面向过程风格的实例
<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}

/* Create table doesn't return a resultset */
if (mysqli_query($link, "CREATE TEMPORARY TABLE myCity LIKE City") === TRUE) {
printf("Table myCity successfully created.\n");
}

/* Select queries return a resultset */
if ($result = mysqli_query($link, "SELECT Name FROM City LIMIT 10")) {
printf("Select returned %d rows.\n", mysqli_num_rows($result));

/* free result set */
mysqli_free_result($result);
}

/* If we have to retrieve large amount of data we use MYSQLI_USE_RESULT */
if ($result = mysqli_query($link, "SELECT * FROM City", MYSQLI_USE_RESULT)) {

/* Note, that we can't execute any functions which interact with the
server until result set was closed. All calls will return an
'out of sync' error */
if (!mysqli_query($link, "SET @a:='this will not work'")) {
printf("Error: %s\n", mysqli_error($link));
}
mysqli_free_result($result);
}

mysqli_close($link);
?>

我通过观察发现,不论是面向对象还是面向过程,数据库的查询只有三部
一、连接数据库,不同的是,面向对象中使用实例化mysqli类来连接,面向过程中使用mysqli_connect()函数连接
二、数据库查询,面向对象使用$mysqli::query(语句)查询,面向过程使用mysqli_query(语句)查询
三、关闭资源,面向对象使用$mysqli->close()关闭,面向过程使用mysqli_close()关闭


老师也说过mysqli的使用与原来很相似,但是对于新手的我来说,过程一样,只是用类实例化对象调用方法来代替原来的函数,不论怎么想都没有什么实际的优势,在网上搜索了很多,好多人会说面向对象更高效更利于维护之类的高深术语,对于新手的我来说,根本没区别。
其实就是想知道在具体开发,或者说编程中,面向对象编程与面向过程编程有多大区别?
...全文
362 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
黄袍披身 2011-10-19
  • 打赏
  • 举报
回复
总结的很好,一针见血 哈哈

[Quote=引用 6 楼 xuzuning 的回复:]

面向对象与面向过程只是看问题的角度不同而已,并无本质的区别

面向对象的编程方法是:
自顶向下分析问题,自上向下编写程序

面向过程的编程方法是:
自顶向下分析问题,自下向上编写程序
[/Quote]
s200612321 2011-10-19
  • 打赏
  • 举报
回复
谢谢大家的指点,现在好想有点头绪了
xuzuning 2011-10-19
  • 打赏
  • 举报
回复
面向对象与面向过程只是看问题的角度不同而已,并无本质的区别

面向对象的编程方法是:
自顶向下分析问题,自上向下编写程序

面向过程的编程方法是:
自顶向下分析问题,自下向上编写程序
jackfans 2011-10-19
  • 打赏
  • 举报
回复
面向对象,就是结构与表现分离的例一种表现方式而已。
改一下昵称 2011-10-19
  • 打赏
  • 举报
回复
这种面向对象风格的代码还不算是OOP
就拿数据库操作来说,为了可移植性和代码清晰考虑,该把 连接,查询,关闭 封装起来,再结合工厂模式,单例模式。系统就可以轻松对付大多数数据库了。
待你看多点设计模式就好了,但我看完一本书实践起来还是觉得的确面向对象能派上用场的地方少了
yunprince 2011-10-19
  • 打赏
  • 举报
回复
光这么点点代码肯定看不出有多大优势,这个要慢慢在写代码的过程中领悟,就算现在把封装、多态、继承等等说一大堆,还是只有个概念,等你写多了自己就明白优势了
ci1699 2011-10-19
  • 打赏
  • 举报
回复
面向对象后期维护方便。易扩展。性能应该没过程的高
ohmygirl 2011-10-19
  • 打赏
  • 举报
回复
如果只是一两个文件,面向对象与面向过程当然没什么区别。但是如果是一个大工程的,那么面向过程就会面临很多问题:代码的重用,组织,扩展性,移植性,维护性等等。。

当然也不能说使用了对象就是面向对象编程。
第1章课程定位与教学案例综述. 1.1职业岗位能力需求分析 1.2课程设置和课程定位分析 1.3WebShop电子商城介绍 1.3.1电子商城需求分析 1.3.2电子商城系统设计 1.3.3电子商城数据库设计 1.4LibraryMIS图书管理系统介绍 1.4.1图书管理系统需求分析 1.4.2图书管理系统系统设计 1.4.3图书管理系统数据库设计 习题 第2章面向对象技术和建模基础 2.1面向对象方法 2.1.1面向对象方法的基本思想 2.1.2面向对象方法的发展 2.2面向对象的基本概念与特征 2.2.1面向对象的基本概念 2.2.2面向对象的主要特征 2.3面向对象分析 .2.3.1处理复杂问题的原则 2.3.200A方法的基本步骤 2.4面向对象设计 2.5面向对象实现 2.6面向对象方法的内涵 2.7软件建模概述 2.7.1软件建模的概念 2.7.2软件建模的用途 2.7.3软件建模的优点 习题 第3章UML简介 3.1UML的发展 3.1.1UML的发展历程 3.1.2理解UML建模 3.2UML的特点 3.3UML的结构 3.3.1UML的事物 3.3.2UML的关系 3.4UML的视图 3.4.1用例视图 3.4.2逻辑视图 3.4.3并发视图 3.4.4组件视图 3.4.5部署视图 3.5UML图形符号 3.5.1用例图 3.5.2类图 3.5.3对象图 3.5.4状态图 3.5.5活动图 3.5.6顺序图 3.5.7协作图 3.5.8组件图 3.5.9部署图 3.5.10UML 2.0新特性 3.6UML建模基本流程 习题 第4章UML建模工具简介 4.1常用UML建模工具 4.1.1 Rational Rose 4.1.2Enterprise Architect 4.1.3Together 4.1.4PowerDesigner 4.1.5 Visi0 4.1.6Tnffun Plat0 4.2Rational Rose安装与配置 4.2.1Rational Rose的运行环境 4.2.2Rational Rose的安装 4.2.3Rational Rose的配置 4.3使用Rational Rose建模 4.3.1Rational Rose主菜单 4.3.2Rational Rose的视图 4.3.3 Rational Rose建模的基本过程 习题 第5章需求建模 5.1用例模型概述 5.2用例图组成 5.2.1参与者 5.2.2系统 5.2.3用例 5.3识别和描述用例.. 5.3.1识别用例 5.3.2绘制WebShop电子商城用例图 5.3.3通过包对用例进行合理规划 5.3.4WebShop电子商城用例图(不含关系) 5.3.5用例描述 5.4用例间的关系 5.4.1泛化关系 5.4.2使用关系 5.4.3包含关系 5.4.4扩展关系 5.4.5关系小结 5.4.6WebShop电子商城用例图(含关系) 习题 第6章静态建模 6.1静态建模概述 6.2类图概述 6.3类图的基本组成 6.3.1类的概述 6.3.2绘制带属性的实体类 6.3.3绘制带操作的实体类 6.3.4绘制边界类图 6.3.5绘制控制类图 6.3.6UML中的类与语言中的类 6.4类之间的关系 6.4.1关联关系 6.4.2聚合关系 6.4.3组合关系 6.4.4泛化关系 6.4.5实现关系 6.4.6依赖关系 6.5对象图 6.5.1对象图概述 6.5.2对象图组成 6.5.3类图和对象图的比较 习题 第7章数据库建模 7.1PowerDesigner简介 7.2PowerDesigner安装和启动 7.2.1PowerDesigner的安装 7.2.2PowerDesigner的启动 7.3PowerDesigner概念数据模型 7.3.1概念数据模型概述 7.3.2PowerDesigner概念数据模型概述 7.4 PowerDesigner物理数据模型 习题 第8章动态建模 8.1动态建模概述 8.2状态图 8.2.1状态图概述 8.2.2状态图组成 8.2.3绘制员工下班回家状态图 8.3活动图 8.3.1活动图概述 8.3.2活动图组成 8.3.3绘制WebShop电子商城活动图 8.4活动图拾遗 8.4.1活动图与流程图的比较 8.4.2活动图与状态图的比较 8.5顺序图 8.5.1顺序图概述 8.5.2顺序图组成 8.5.3绘制WebShop电子商城顺序图 8.6协作图 8.6.1协作图概述 8.6.2协作图组成 8.6.3绘制WebShop电子商城协作图 8.7 顺序图拾遗 8.7.1 顺序图与协作图的比较 8.7.2 顺序图与协作图的互换 习题 第9章物理建模 9.1物理建模概述 9.1.1硬件 9.1.2软件 9.2组件图 9.2.1组件图概述 9.2.2组件图组成 9.2.3绘制WebShop电子商城组件图 9.3部署图 9.3.1部署图概述 9.3.2部署图组成 9.3.3绘制WebShop电子商城部署图 习题 第10章双向工程 10.1双向工程简介 10.2正向工程(生成Java代码) 10.3逆向工程 习题 第11章统一软件过程RUP 11.1RUP简介 11.2RUPT作流程 11.2.1业务建模 11.2.2需求 11.2.3分析设计 11.2.4实施 11.2.5测试 11.2.6部署 11.2.7配置与变更管理 11.2.8项目管理 11.2.9环境 11.3RUP迭代过程 11.3.1初始 11.3.2细化 11.3.3构造 11.3.4移交 11.3.5迭代计划示例(构造阶段) 习题 附录A综合实训 附录B Rational Rose2003主菜单 参考文献...

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧