Python 面向对象编程(一) —— 面向过程和面向对象的区别

  • 【无限嚣张(菜菜)】:hello您好,我是菜菜,很高兴您能来访我的博客,我是一名爱好编程学习研究的菜菜,每天分享自己的学习,想法,博客来源与自己的学习项目以及编程中遇到问题的总结。
  • 座右铭:尽人事,听天命
  • 个人主页:无限嚣张(菜菜)

目录

前言

一、面向对象和面向过程的区别

  1. 面向过程(Procedure Oriented)思维
  2. 面向对象思维(Object Oriented)思维
  3. 面向对象和面向过程的总结

二、对象的进化

前言

        面向对象(Object orject Programming, OOG)编程主要针对大型软件设计而来,面向对象编程使程序的扩展性更强,可读性更好,使得编程像搭积木一样简单化。面向对象编程将数据和操作数据相关的方法封装到对象中,组织代码和数据的方式更接近人的思维,从而大大提高编程的效率。Python完全采用了面向对象的思想,是真正面向对象的编程语言,完全支持面向对象的基本功能,例如:继承、多态、封装。Python支持面向过程、面向对象、函数式编程等多种编程范式。

面向对象和面向过程的区别

面向过程(Procedure Oriented)思维

        通俗讲,就是通过过程来组织我们的程序,面向过程更加关注的是“程序的逻辑流程”,是一种执行者思维,适合编写小规模的程序。面向过程思想思考问题时,我们首先思考的是怎么按照步骤实现?并将步骤对应成方法,一步一步,最终实现。这个适合简单的任务,不需要过多协作情况下,比如如何开车?我们很容易就会想到如下四个步骤:1.发动车 2.挂挡 3.踩油门 4.走你。面向过程适合简单、不需要协作的事务。但是,当我们思考比较复杂的事务,面向过程就不能实现了,需要很多协作才能完成。此时面向对象的思想也就产生了。

面向对象思维(Object Oriented)思维

        面向对象更加关注的是“软件对象之间的关系”,是一种设计者思维,适合编写大规模的程序。面向对象(Object)思想更契合人的思维模式,我们首先思考的是:怎么设计这个事物?比如思考造车,我们就会先思考:车是怎么设计呢?而不是造车的步骤。这就是思维方式的改变。面向对象方式思考造车,发现车由如下对象组成:(1)轮胎 (2)发动机 (3)车壳 (4)座椅 (5)挡风玻璃,为了方便协作,我们找轮胎厂家完成制造轮胎的步骤,发动机厂家完成制造发动机的步骤,这样,发现大家可以同时进行车的制造,最终进行组装,大大提高了效率。但是,具体轮胎厂的一个流水线操作,仍然是有步骤的,还是离不开面向过程思想!因此,面向对象可以帮助我们从宏观上把握,从整体上分析整个系统。但是,具体到实现部分的微观操作(就是一个个方法),仍然需要面向过程的思路去处理。我们千万不要把面向过程和面向对象对立起来,他们是相辅相成的,面向对象离不开面向过程。

面向对象的思考方式:遇到复杂问题,先从问题中找名词(面向过程更多的是找动词),然后确立这些名词哪些可以作为类,再根据问题需求确定的类的属性和方法,确定类之间的关系。

面向对象和面向过程的总结

        (1)都是解决问题的思维方式,都是代码组织的方式。

        (2)解决简单问题可以使用面向过程。

        (3)解决复杂问题:宏观上使用面向对象把握,微观处理上仍然是面向过程。

对象的进化

        随着编程面临的问题越来越复杂,编程语言本身也在进化,从主要处理简单数据开始,随着数据变多进化“数组”;数据类型变复杂,进化出“结构体”;处理数据的方式和逻辑变复杂,进化出了对象。

1.简单数据

        像20,40,50等这些数字,可以看做是简单数据。最初的计算机编程,都是这样的数字。

2.数组

        将同类型的数据放到一起。比如:整数组[20,30,40],浮点数数组[10.2,11/3,44.4],字符串组["aa","bb",cc].

3.结构体

        将不同类型的数据放到一起,是C语言中的数据结构,比如:

        struct resume{

                int age;

                char name [10];

                double salary;

                };

4.对象

        将不同类型的数据、函数(即函数)放到一起,就是对象。比如:

class Student

        company = "SXT"  # 类属性

        count = 0 # 类属性

        def__int__(self,name,score):

                self.name = name

                self.score = score

                Student.count = Student.count + 1

        def say_score(self): 

                print("我的公司是:",Student.company)

                print(self.name,‘的分数是:’,self.score)

你可能感兴趣的:(Python,面向对象,python,面向过程)