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

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的使用与原来很相似,但是对于新手的我来说,过程一样,只是用类实例化对象调用方法来代替原来的函数,不论怎么想都没有什么实际的优势,在网上搜索了很多,好多人会说面向对象更高效更利于维护之类的高深术语,对于新手的我来说,根本没区别。
其实就是想知道在具体开发,或者说编程中,面向对象编程与面向过程编程有多大区别?
...全文
350 8 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复
如果只是一两个文件,面向对象与面向过程当然没什么区别。但是如果是一个大工程的,那么面向过程就会面临很多问题:代码的重用,组织,扩展性,移植性,维护性等等。。

当然也不能说使用了对象就是面向对象编程。

21,886

社区成员

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

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