面向对象和面向过程各有千秋

一.面向过程与面向对象对比

   面向过程:强调的是每一个功能的步骤,有很多很多方法组成,这些方法相互调用,完成需求。
  面向对象:强调的是对象,然后由对象去调用功能。

  面向过程:如果做小的项目,则效率非常高,很快就能实现,但是后期维护非常麻烦。
   面向对象:如果做大的项目,则效率相对会低,但是代码结构性很好,后期维护容易。从这个方面来说,效率反而提高了。

面向对象是基于面向过程的编程思想

二.以面向对象为主,对比面向过程说明面向对象的思想特点

世间万物皆对象

       面向对象的思想特点:     

                                      1. 是一种更符合我们思想习惯的思想
                                      2. 可以将复杂的事情简单化
                                 3. 将我们从执行者变成了指挥者

举例对比:

              买电脑:
      面向过程:我先了解电脑-->了解我自己的需求:学习用-->找对应的参数信息-->去中关村买电脑-->讨价还价-->买回电脑。
      面向对象:我知道我要买电脑-->班长去给我买-->班长就买回来了。
    洗衣服:
      面向过程:把衣服脱下-->找一个盆-->放点洗衣粉-->加点水-->把衣服扔进去-->搓一搓-->清洗衣服-->拧干-->晾起来。
      面向对象:把衣服脱下-->打开全自动洗衣机-->扔进去-->一键即可-->晾起来。
    吃饭:
      面向过程:去超市买菜-->摘菜-->洗菜-->切菜-->炒菜-->盛起来-->吃。
      面向对象:去饭店-->服务员(点菜)-->厨师(做菜)-->服务员(端菜)--吃。

三.把大象装进冰箱

面向过程:

分三步:

                            1.打开冰箱门

                            2.装进大象

                            3.关闭冰箱门

代码示例:

class Demo {
public static void main(String[] args) {
/*
System.out.println("打开冰箱门");
//打开冰箱门的动作,现在仅仅是为了演示,就写了一个输出语句,其实,它可能需要做很多操作。这个时候代码就比较多一些了。
//假设我要多次打开冰箱门,代码一多,每次都写一遍,麻烦不?
//我们就应该用方法改进。
System.out.println("装进大象");
System.out.println("关闭冰箱门");
*/
//写了方法以后,调用就改变了。
open();
in();
close(); public static void open() {
System.out.println("打开冰箱门");
} public static void in() {
System.out.println("装进大象");
} public static void close() {
System.out.println("关闭冰箱门");
}
}

  

        面向对象:

                  我们怎么才能更符合面向对象思想呢?
        1:有哪些类呢?
      2:每个类有哪些东西呢?
      3:类与类之间的关系是什么呢?

    把大象装进冰箱的分析?(如何分析有哪些类呢?答:名词提取法。)(UML:统一建模语言。)
      A:有哪些类呢?
        大象类
        冰箱类
        Demo类
      B:每个类有哪些东西呢?
        大象类:
          进去
        冰箱类:
          开门
          关门
        Demo类:
          main方法
      C:类与类之间的关系是什么呢?
        Demo类中使用大象类和冰箱类的功能。

代码示例:

class 大象 {
public static void in() {
System.out.println("装进大象");
}
} class 冰箱 {
public static void open() {
System.out.println("打开冰箱门");
} public static void close() {
System.out.println("关闭冰箱门");
}
} class Demo {
public static void main(String[] args) {
                 冰箱.open();//冰箱类调用开门方法
                 大象.in();大象类调用进去方法
冰箱.close();冰箱类调用关门方法
}
}

  

为什么大一先要学C语言(面向过程)再学C++或JAVA(面向对象)?的更多相关文章

  1. 关于pythoh面向过程开发人员三步转面向对象的补充,再加一步,四步走战略。转面向对象也可以有固定公式。

    前言: oop非常非常非常重要.搞不懂oop,就玩不了python,就算能写也一定是写代码时候喜欢靠猜瞎猫碰死老鼠写得心很虚.为什么这么说呢,我也是从面向过程编程到死走过来的,一路def到死,一看到有 ...

  2. 使用100%面向过程的思维方式来写java程序

    1.java是强制写class关键字的语言,不能有独立的函数游离在类外出现在文件中,这和python c++ 都不同,后面的都可以单独在类外写函数,所以java被称为是纯面向对象的语言,py和c++都 ...

  3. [转]面向过程的分析(POA),和面向对象的分析(OOA)

    欢迎转载本文,转载地址: http://www.juliantec.info/articles/basic-concept/poa-and-ooa.html 软件开发方法论概述 在60年代的软件开发行 ...

  4. 我是先学C语言还是先学C++,实不相瞒,鱼和熊掌可兼得!

    这是最近一周时间几个读者小伙伴所提的问题,我顺手截了两个图. 实不相瞒,这类问题之前也经常看到.     每次遇到这种问题,看起来很简单,但是打字一时半会还真说不清,想想今天周末了,写一篇文章来统一聊 ...

  5. 【C】 01 - 再学C语言

    “C语言还用再学吗?嵌入式工程师可是每天都在用它,大家早就烂熟于心,脱离语言这个层面了”.这样说不无道理,这门古老的语言以其简单的语法.自由的形式的而著称.使用C完成工作并不会造成太大困扰,所以很少有 ...

  6. 如何从普通程序员晋升为架构师 面向过程编程OP和面向编程OO

    引言 计算机科学是一门应用科学,它的知识体系是典型的倒三角结构,所用的基础知识并不多,只是随着应用领域和方向的不同,产生了很多的分支,所以说编程并不是一件很困难的事情,一个高中生经过特定的训练就可以做 ...

  7. python怎么写可读性好的面向过程的长篇代码?

    最近接受老代码,mmp的,说是重新运行运行起来,那还不如重写呢,因为有很多毛病,不能直接运行,pep8就不用妄想奢望了,还有包括语法错误问题和内存严重泄露的问题(运行几分钟后python.exe进程达 ...

  8. javascript 面向过程和面向对象

    面向过程 思维方式:把解决问题的关注点,放到解决问题的每一个详细步骤上面. 面向对象 思维方式:把解决问题的关注点,放到解决问题需要的一些对象身上. 创建对象: 对象字面量 使用内置构造对象 封装简单 ...

  9. 我为什么要学Go语言

    # 我为什么要学Go语言 ### 公司的强烈推荐---之前也了解过Go语言并没有觉得有什么了不起,Go能做的其他语言都能做. ### 网上查找学习Go语言的理由---网上大体有两类人,一类说Go是大公 ...

随机推荐

  1. 末学者笔记--Linux权限管理

    一.权限概述 Linux系统一般将文件可存/取访问的身份分为3个类别:owner(拥有者).group(和所有者同组的用户).others(其他人,除了所有者,除了同组的用户以及除了超级管理员),且3 ...

  2. jdbc连接数据库以及crud(简单易懂,本人亲测可用 有源代码和数据库)

    今天呢!重新整理了一边jdbc的相关操作:现在来说对于很多框架都使用mybatis和hibernate来操作数据库 ,也有很多使用自己简单封装的ssm或者是其他的一些框架来操作数据库,但是无论使用哪一 ...

  3. [原创]Cadence Allegro16.6安装

    选择Cancel. lisence managner安装完成,然后安装Product installation Cadence OrCad Allegro SPB 16.6 完整版+和谐文件 链接:h ...

  4. 激活windows专业版(激活windows10专业版,解决“我们无法在此设备上激活windows因为无法连接到你的组织的激活服务器 ”)

    本来系统用的好好的,但是前几天系统突然提示我要去取设置里面激活windows,我就想:我的系统好像是原厂正版的吧,怎么就过期了呢?没办法只能搜索下怎么激活,去系统城,各大网站什么的试了好多密钥全部不行 ...

  5. 基于docker/dockerfile实现redis主从复制

    今天我们来搭建基于docker实现redis主从复制集群 为什么要使用redis集群模式? Redis可以说是内存数据库,mysql的数据库是真实存储在硬盘里的,因此,redis的读取速度要比mysq ...

  6. 权限的控制 shiro的使用

    ******shiro的使用 三大核心组件 Subject:即当前用户,在权限管理的应用程序里往往需要知道谁能够操作什么,谁拥有操作该程序的权利,shiro中则需要通过Subject来提供基础的当前用 ...

  7. SVM:根据大量图片来精确实现人脸识别—Jason niu

    from __future__ import print_function from time import time import logging import matplotlib.pyplot ...

  8. python vs vscode问题汇总

    最近在学工程目录章节的时候遭遇了个把 vscode目录管理 造成的问题, 当然第一大原因是: 初学者使用vscode的时候没有将环境设置好..... 闹了好几天的脾气, 这两天才整理好..... 这事 ...

  9. Java中 StringTokenizer 的用法

    一.StringTokenizer 1.1 StringTokenizer简介及其构造函数的三种形式: StringTokenizer类是字符串分割解析类型,其属于java.util包,在使用之前需要 ...

  10. 使用anaconda创建tensorflow环境后如何在jupyter notebook中使用

    在以下目录中 C:\Users\UserName\AppData\Roaming\jupyter\kernels\python3 打开kernel.json文件,将python.exe文件的路径修改至 ...