面向对象程序设计

面向对象编程(OOP)是一种编写计算机程序的方法,它是用"对象"的思想来表示数据和方法。通常,计算机程序只是向计算机发出一系列的指令,告诉计算机以某种方式做某些事情,这就是所谓的程序化编程。但是,在面向对象编程中,计算机程序利用对象之间的相互对话,并改变这些对象中的数据,以用户想要的方式工作。同时,由于面向对象编程的设计方式,它可以使代码很容易地被程序的其他部分甚至其他人重用,从而帮助开发者。

大多数编程语言都是不同类型的计算机程序编写方式的混合。例如,Python允许用面向对象编程和程序化编程两种方式编写计算机程序。有许多编程语言允许你用OOP方式编写计算机程序,这些编程语言中有一些是,例如。C++、Java、Ruby、Perl、Emarald、SapphirePHP、Python等。

特点

面向对象程序设计的主要思想是:一切事物都是一个对象。然而,对象可以有不同的类型。

  • 变量可以保存编程语言所支持的不同类型的信息(或数据)。例如整数数据类型和列表数据结构。变量是程序化编程语言中已经有的思想。在面向对象编程中,变量主要被称为属性。
  • 程序(又称函数、方法或例程)是一个指令列表,告诉计算机接受输入,进行一些计算或改变数据,并将输出返回给用户。程序也是程序化编程语言中已有的思想。在面向对象编程中,程序主要称为方法。
  • 类是不同变量和程序的集合。类之间通常会相互对话,对数据进行修改,以便以用户想要的方式工作。

对象是一个术语,用来指代类的实例。

例子

在下面的例子中,我们创建了一个名为Human的类。这个类包含属性name(代表人的名字)和friend(代表朋友的名字)。Human类中的每个方法都包含一个指令列表,它同时使用了namefriend属性。

蟒蛇

这段代码是用Python编写的。

class Human(object): def __init__(self, name, friend=None): self.name = name self.friend = friend def say_name(self): print("My name is "+self.name) def say_goodnight(self): if self.friend is None: print("Good night nobody.") else: print("Good night "+self.name) # 创建一个名为Stephen的新Human对象,名字为"Stephen" stephen = Human("Stephen") # 创建一个名为joe的新Human对象,名字为"Joe",并将Stephen作为朋友 joe = Human("Joe", stephen) stephen.say_name() # 显示'我的名字是Stephen' stephen.say_goodnight() # 显示'Good night nobody.' joe.say_name() # 显示'我的名字是Joe' joe.say_goodnight() # 显示'Good night Stephen'

爪哇

这段代码是用Java编写的。

人文类

class Human { private String name = "unnamed"; // the name of this Human private Human friend = null; // the Human's friend // This method creates a new Human object when given the name and friend public Human(String name, Human friend) { this. name = namethis.}// 当只给定名称时,该方法也创建一个新的Human对象 public Human(String name) { this.name = name; this.friend = null; }// 当没有同时给定名称和朋友时,该方法会创建一个新的Human对象 public Human() { this.println("我的名字是" + this. name); public void sayGoodnight() { if (friend == null) { System. out. println("Good night nobody."); } else { System.}}

一个与上面的Human类对话的方法

class Main { public static void main(String[] args) { // Create a new Human object stephen with name "Stephen" Human stephen = new Human("Stephen"); // Create a new Human object joe with name "Joe" and stephen as a friend Human joe = new Human("Joe", stephen); stephen.sayName(); // Shows 'My name is Stephen' stephen.sayName(); // 显示"我的名字是Stephen"Stephen.sayGoodnight(); // 显示"晚安,没有人"joe.sayName(); // 显示"我的名字是Joe"joe.sayGoodnight(); // 显示"晚安,Stephen"}}

批评

虽然面向对象编程很流行,但也有很多人认为它不好,对它进行批评。

  • Luca Cardelli写了一篇题为《面向对象语言的不良工程特性》的论文。
  • Richard Stallman在1995年写道:"在Emacs中加入OOP并不是明显的改进,我在研究Lisp Machine窗口系统时使用了OOP,我不同意通常的观点,即它是一种高级的编程方式。"
  • 波托克等人的研究告诉我们,OOP和程序化方法的生产率差别很小。
  • Christopher J. Date说,将OOP与其他事物进行比较,尤其是OOP与其他事物的关系,是很困难的,因为人们对OOP的含义并不一致。
  • 亚历山大-斯捷潘诺夫提出,OOP给出的观点,就数学而言是有限的,并称其"几乎和人工智能一样是个骗局"
  • 保罗-格雷厄姆(Paul Graham)是一位成功的互联网销售人员和程序员,他曾提出,OOP的目的是作为一种群居机制,它使一般组织中的普通程序员不至于"造成太大的损失"。这也减缓了更快、更好的程序员的速度,他们知道如何用更强大、更紧凑的方式来做事情。[1]

问题和答案

问:什么是面向对象的编程?
答:面向对象编程是一种使用 "对象 "来代表数据和方法的计算机程序编写方式。

问:面向对象编程与程序性编程有何不同?
答:在程序性编程中,计算机程序是计算机的指令列表,告诉它以某种方式做某些事情。在面向对象编程中,计算机程序使用对象,这些对象相互交谈,以改变这些对象中的数据,并以用户想要的方式工作。

问:面向对象的编程对开发者有什么好处?
答:面向对象的编程允许代码很容易被程序的其他部分甚至其他人重复使用。

问:Python编程语言以什么著称?
答:Python使计算机程序既可以用面向对象的编程方式,也可以用程序性编程方式编写。

问:你能举出允许你以面向对象的编程方式编写计算机程序的编程语言的例子吗?
答:允许你用面向对象的编程方式编写计算机程序的编程语言包括:C++、Java、Ruby、Perl、Emarald、Sapphire、PHP、Python、C#等。

问:什么是面向对象编程中的对象?
答:对象是面向对象编程中的实体,包含数据和方法。

问:在面向对象编程中,对象是如何工作的?
答:对象之间相互作用,改变这些对象中的数据,并以用户希望的方式工作。

AlegsaOnline.com - 2020 / 2023 - License CC3