如何面向对象_为什么面向对象编程

如何面向”对象”

天天跟我们这些苦逼的程序猿(媛)们喊着:”要面向对象编程“,你倒是给我新建一个对象嘛。你看看,都没有对象,我怎么面向对象编程嘛。网上关于Java和**C++**的面向对象编程相关介绍的博客文章已经很多了,那我为什么还写呢?因为,人生苦短,刚好我是学Python的…

刚好今天当我在学习Python的OOP时,刚想吐槽这面向对象编程内容还挺多,突然就有一句乱入了——美女“编程”老太婆。???,这好不容易有个美女编程,怎么变成了老太婆。

以上纯属瞎编,话说回来,能有个”对象”面向对象编程,一起变成糟老头和老太婆也挺好的,你说对不对。

程序设计之面向对象编程

如何面向对象_为什么面向对象编程

1. 为什么需要程序设计?

在建筑行业,建筑师一般不会想要为一幢100层的大楼添加一个地下室,因为这样做无疑是成本过高,甚至有可能会失败。(上半年刚监考过一级建筑师考试,3.5小时的场地设计画图题看着都难。)

令人吃惊的是,在我们的软件开发行业中,当用户提出类似的改动时,都不会去多想。相反,老板或者产品经理可能会说这是一个简单的编程问题。(哈哈,这里无意中伤程序员与产品经理…)

但是,软件本质上是复杂的,随着项目的迭代,复杂性往往超出了人类智能的范围。

2. 是否存在”最好的”设计?

在每一种工程实践中,设计都是一种训练有素的方法。不管是函数式编程、泛型编程、并发编程、面向过程基于对象面向对象等的程序设计,我们通过设计方法来创造某个问题的解决方案,从而提供时间需求的途径。

那么,是否存在“最好的”设计方法?

这个问题可能没有绝对的答案,但《没有”银弹”》告诉我们:没有单纯的技术或管理上的进步可以万无一失地让软件工程从需求得到一个复杂系统的实现。所以,面向对象也不是解决软件开发中所有问题的最后的“银弹”,如今很多高级编程语言提供了多种编程设计范式,Python也不例外。

3. 为什么面向对象编程?

类是面向对象程序编程的主要工具,我们用它来定义新种类的方式,它在程序领域中反映了现实中的对象。而什么是面向对象编程呢?

面向对象编程是一种实现的方法,在这种方法中,程序被组织成许多组相互协作的对象,每个对象代表某个类的一个实例,而类则属于一个通过继承关系形成的层次结构。

来看一下概念中的三个要点:

利用对象作为程序的基本单元,而不是算法

每一个对象都是某个类的一个实例

类和类之间可以通过继承关系联系在一起

满足这三点才是叫面向对象的程序。我们用一个简单的例子来模拟一下

接着,我们先了解一下面向对象的三个核心概念:

继承。通俗理解,”儿子从父亲那继承下来的东西”。如果在一个类的基础上创建新的有类,会将父类的属性和方法直接继承下来,从而减少重复代码的编写。提供继承信息(财产)的我们称为父类、或者基类、超类;得到继承信息的我们称为子类、或派生类或衍生类。

多态。字面意思,”多种形态”,接口的不同实现方式即为多态。通过多态,子类可以扩展父类的能力,或者覆写父类的操作。

封装。我对封装的理解,就像一个具有某些功能的黑箱子,隐藏一切可以隐藏的实现细节,然后对外提供简单的编程接口。

面向对象编程提供了一种有效的编程方式,利用这种方式,我们将代码冗余程度降到最低。因此,我们可以通过定制已有的代码来编写新的程序而不是在原处进行修改。

Python中的一切皆对象

在Python中,OOP是完全不是必须的,在初学阶段也不需要使用类,利用函数结构也能写出很多好用的脚本,完成很多有趣的编程。但是Python OOP也非常有意思,不信你跟我一起学学。

Java虽然也是面向对象编程的语言,但是血统没有Python纯正。比如Java的八种基本数据类型之一int,在持久化的时候,就需要包装成Integer类对象。

与Java相比,Python的面向对象更彻底。学过Python的朋友可能知道,在Python中,把我们所有能看到的都变成对象——数字、字符串、元组、列表、字典、函数、方法、类、模块、包括你的代码。

怎么理解这个过程呢?Python 中的一切都可以赋值给变量或者作为参数传递给函数,我们来看一下代码:

a = 3

b = a

print(a) # 打印:3

print(b) # 打印:3

def all_is_object():

print(“Learing Python OOP”)

all_is_well = all_is_object

all_is_object() # 打印:Learing Python OOP

all_is_well() # 打印:Learing Python OOP

class Person():

def __init__(self, name):

print(“姓名:”, name)

A = Person

xiaoyu = A(“小宇”) # 姓名: 小宇

Python对象的三个特性

Python 的所有对象都有三个特性:身份(id)类型(type)值(value)

身份(id):每个对象都有一个唯一的身份标识自己,任何对象的身份都可以使用内建函数 id() 来得到,可以简单的认为这个值是该对象的内存地址。

a = 3

b = a

id(a)

id(b)

id(test_list)

类型(type):对象的类型决定了对象可以保存什么类型的值,有哪些属性和方法,可以进行哪些操作,遵循怎样的规则。可以使用内建函数 type() 来查看对象的类型。

a = 3

b = a

print(type(a)) # <class ‘int’>

print(type(int)) # <class ‘type’>

test_list = [1, 2, 3, 4, 5]

print(type(test_list)) # <class ‘list’>

print(type(list)) # <class ‘type’>

test_tuple = (1, 2, 3, 4, 5)

print(type(test_tuple)) # <class ‘tuple’>

print(type(tuple)) # <class ‘type’>

test_str = “I love python”

print(type(test_str)) # <class ‘str’>

print(type(str)) # <class ‘type’>

值(value):对象所表示的数据

print(a) # 3

print(test_list) # [1, 2, 3, 4, 5]

print(test_str) # I love python

“身份”、”类型”和”值”在所有对象创建时被赋值。只要对象存在,这三个特性就一直存在。

总结

事实上,我们学习的软件框架(framework)就是父类的集合,框架就是把常见的程序设计任务实现成类,我们所需要做的就是通过编写自己的子类,组合和定制已调试过的代码。此外,将常见的OOP结构归类,就是我们的设计模式(design pattern),来协助解决设计中的问题。

这些软件框架可能提供一些数据库接口、测试协议、GUI工具包等

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 86345@qq.com 举报,一经查实,本站将立刻删除。
(0)
上一篇 2023-01-04 09:44:23
下一篇 2023-01-04 09:48:28

猜你喜欢

  • excel countifs多个条件

    EXCEL使用COUNTIFS函数统计符合多个条件的单元格 1、要统计的数据表格如下,第一个实例,就是统计如下图所示的所有缺考的人数。我们已知,缺考的人在F栏都有备注“缺考”俩字,…

    2022-04-02
  • dm是什么单位的简称?dm是什么单位?

    这两天三思在整理全部的长度单位,万一以后想写点啥会用到呢,整理出来就干脆弄篇文章放着,虽然没什么卵用,但是感兴趣可以看看。 幺米(攸米,皆米,ym,公认最小长度单位)——仄米(介米…

    2024-01-25
  • 凯迪拉克有什么优点和缺点,凯迪拉克的优点和缺点

    优点: 品牌历史与豪华定位:凯迪拉克拥有悠久的历史和深厚的豪华车制造底蕴,其产品在设计、材质和工艺方面都体现了豪华品牌的特质。 外观设计:凯迪拉克车型的外观独特、动感,采用了时尚的…

    投稿 2023-11-01
  • 房地产税试点城市是怎么产生的,需要考虑哪些方面

    截至目前,我国房产税试点城市已经扩大至十几个,北京、上海、广州、深圳等大型城市,天津、南京、苏州等一线城市均被纳入其中。背景则是为了积极稳妥实施房地产税立法工作,引导住房合理消费和…

    2023-07-20
  • 老板喜欢什么文化理念_老板喜欢的文化理念

    想得到老板的亲耐,这三种文化理念老板最喜欢: 道德品质 一个成熟的企业更多考虑的往往是道德品质方面的素质,尤其是诚信意识、奉献精神和责任感。 一些外企在团队面试前都会要求应聘者签下…

    2022-10-04
  • 入党个人自传如何写,入党个人自传范文

    我叫×××,男,×族,××文化,××省××市××县××乡(镇)××村(街)人,… 我的学习、工作经历是: … 我的家庭主要成员是: 父亲,×××,×族,××××年××月出生,政治面…

    投稿 2023-07-06
  • 做试管不成功的原因有哪些_做试管不成功的原因

    现如今很多家庭都受着不孕不育的困扰,没有办法完成做父亲母亲的愿望。如果经过治疗没有办法把不孕不育症治好或者不孕不育找不出真正的原因所在,就需要通过辅助的生殖手段来圆大家一个做母亲父…

    2023-04-10
  • 芒果怎么催熟_芒果催熟的技巧

    芒果是很多朋友喜欢吃的一种热带水果,其品种也十分丰富,有的个头很大,有的个头较小,一般大家在网上购买的芒果,商家为了方便运输,会选择成熟度不是那么高的芒果进行发货,而这类型的芒果就…

    2023-03-23
  • 海鲜过敏怎么办_海鲜过敏解决方法

    现在正是吃海鲜的季节,可是偏偏有些爱吃海鲜的人对海鲜过敏,但是面对美食的诱惑,为了那一口“心头好”,都会有人不惜忍受大快朵颐后遍布的全身瘙痒,丘疹、风团,严重一点还会有头晕、恶心等…

    2022-11-15
  • 百叶帘的优缺点有哪些,百叶帘的优缺点

    百叶帘 百叶窗是窗帘的一种。 有许多不同类型的百叶窗,它们使用各种控制系统。 典型的百叶窗由几条长的水平或垂直板条组成,这些板条由各种类型的硬质材料制成,包括木材、塑料或金属,它们…

    2023-10-22

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注