本人水平有限,创作本文是为了记录学习和帮助初学者学习,欢迎指正和补充

一.面向对象编程的设计概述

很多同学都在学校学了电脑的编程,现在的书籍大部分都是oop面向对象编程,一个很抽象的的名字,比较难以理解,首先我们从名字开始入手 (老实说我和大家一样,开始的时候也是比较难以理解)

OOP的全称是:Object Orient Programming (Object:对象  Orient:指定方向  Programming: 编程)

所以面向对象编程可以说就是对英文的直译过来的,我们来初步认识下:

  1.首先看Object对象,首先想想什么是对象,我看着你,你对我来说就是对象,我对于你来说也是对象,电脑是对象,喝水的水杯是对象,书包也是对象,简单来说对自己能清楚描述的一个具体的形象就可以称为对象,这个对象你很清楚的分别到底是什么就可以理解是对象了,虽然有点拗口 但别放弃看下去,我会尽力说的清楚的。

  2.接下来我们看看 Orient :指定方向  ,这个最重要的说明就是指定,因为你看到的某个对象就是你自己给自己指定的方向的对象,稍微理解前面的话,大概就能说明什么是面向对象了(现在估计你还是比较含糊,别担心,往下看)。

  3.最后编程Programming这个就不用我说了。

    我以个人理解大概解释了面向对象编程的表面意思,为什么说是表面意思,因为说了这么多,你们还是不知道怎么写代码,哈。

 1.前面说了这么多,但为什么要进行面向对象编程设计?面向对象的优点在哪呢?

  说到这里我就不得不说下早期编程了,不知道现在看这篇文章的你是否写过c语言,写过的话其实就很能理解,c语言中从一个Mian函数中开始从头写到尾直到程序编完,虽然中间夹杂着各个方法,但程序的结构就是由上到下,写下来思路清晰一气呵成,自我感觉完美,但这时如果需求变了需要改变一个功能,这时看着这2万行代码是不是有点头大,有一种牵一发而动全身的感觉,虽然有大神可以写的很完美,但还是有面临这个状况的时候,偶尔会引出奇怪的bug,因为c语言是面向过程的语言。

  传统的结构化程序设计是通过设计一系列的过程来解决问题,这个过程也就是算法了,一旦确定了这些过程,就要开始考虑存储数据的方式。这就是Pascal语言的设计者Niklaus Wirth 将其著作命名为《算法+数据结构=程序》的原因,需要注意的是,在Wirth命名的书名中,算法是第一位的,数据结构是第二位的,这就明确的表述了程序员的工作方式。首先要确定如何操作数据,然后再决定如何组织数据,以便数据操作。而OOP却调换了这个次序,将数据放在第一位,然后再考虑操作数据的算法。

---摘抄《Java核心技术 卷1 基础知识》

  上面的语言说的很明白,很有水平,清楚的说明了传统编程和OOP编程的区别,但没有说为什么要进行面向对象编程,接下来我就用没有什么水平但很通俗的话来说明一下。首先我在前面说了什么是对象,对对象进行了一系列自我意识的解释,如果你看了上面的话那么就能更好的理解我下面的说明了,现在开始说明比如说一个汽车对象,我们看到它,请问你自己为什么判断它是一辆汽车?如果说你见过所以知道,那么新出的车,你第一眼看到的时候为什么就能判断它是一辆车?因为什么?因为它有四个轮子可以载人在马路上跑,有车窗有车门等等,有了这些判断是不是大概就能判断这是不是一辆汽车了?是的,你有了这些判断,就可以判断一个对象是什么,所以这里就体现出了面向对象的优点,一眼就知道这个对象要干什么能干什么,很清楚很明朗,程序这么设计的话条理会很清晰,而且你想想上面说的C语言改功能的需求,如果你的程序中有好多对象,汽车对象,水杯对象,电脑对象...这时需求要求改一下汽车车身颜色,这时你只要在代码中找到汽车对象进行更改就ok了,是不是很简单,也不会引起bug的产生。如果你认真看了上文现在你理解的应该更深入了一点,但还是不知道怎么写代码,别急,要想写代码还缺一个东西,这个东西就是类(class)。

  2.类(Class)

 下次再写吧~

Java学习之路 第四篇 oop和class (面向对象和类)的更多相关文章

  1. Java学习之路【第一篇】:前言

    Java 语言概述 一.什么是Java语言 Java语言是美国Sun公司(Stanford University Network),在1995年推出的高级的编程语言.所谓编程语言,是计算机的语言,人们 ...

  2. Vue学习之路第四篇:v-html指令

    上一篇我们讲解了两种方式,把Vue对象的数据展示在页面上: 1.插值表达式 2.v-text指令 但是如果我们展示的数据包含元素标签或者样式,我们想展示标签或样式所定义的属性作用,该怎么进行渲染,比如 ...

  3. python学习之路网络编程篇(第四篇)

    python学习之路网络编程篇(第四篇) 内容待补充

  4. [转帖]java架构之路-(面试篇)JVM虚拟机面试大全

    java架构之路-(面试篇)JVM虚拟机面试大全 https://www.cnblogs.com/cxiaocai/p/11634918.html   下文连接比较多啊,都是我过整理的博客,很多答案都 ...

  5. 新篇章之我的java学习之路下

    昨天写下了人生的第一篇博客,今天接着写我的java学习之路有关开发及框架的学习过程. 想要学好java语言,只学习一些java的基本语法对实际开发中的用处还是不大的,所以我们还要掌握一些有关javaW ...

  6. java学习之路之javaSE基础1

    <h2>java学习之路之javaSE基础1</h2> <div> ###01.01_计算机基础知识(计算机概述)(了解)* A:什么是计算机?计算机在生活中的应用 ...

  7. Java学习之路(转)

    Java学习之路(书籍推荐)   一.基础类 1.<Thinking in java>(阅读2遍),入门第一位是建立正确的概念 2.<Core Java>这本书更贴近实践,更多 ...

  8. JAVA学习之路与大家分享

    这是我四年以前总结的JAVA学习之路,希望对初学者或想从事JAVA开发的人有帮助. 本人是软件工程专业出身,先后学过C.C++.JAVA.VB.delphi等等开发语言以及网络相关管理技术.哎,好久不 ...

  9. OpenGL学习之路(四)

    1 引子 上次读书笔记主要是学习了应用三维坐标变换矩阵对二维的图形进行变换,并附带介绍了GLSL语言的编译.链接相关的知识,之后介绍了GLSL中变量的修饰符,着重介绍了uniform修饰符,来向着色器 ...

随机推荐

  1. loj 6278 6279 数列分块入门 2 3

    参考:「分块」数列分块入门1 – 9 by hzwer 2 Description 给出一个长为\(n\)的数列,以及\(n\)个操作,操作涉及区间加法,询问区间内小于某个值\(x\)的元素个数. 思 ...

  2. 修饰符的范围+运算符优先级+构造方法特点+switch参数

    一.修饰符的范围 修饰符的范围,是否可访问: 类型 private 无修饰 protected public 同一类 是 是 是 是 同一包中的子类 否 是 是 是 同一包中的非子类 否 是 是 是 ...

  3. POJ 3480 John [博弈之Nim 与 Anti-Nim]

    Nim游戏:有n堆石子,每堆个数不一,两人依次捡石子,每次只能从一堆中至少捡一个.捡走最后一个石子胜. 先手胜负:将所有堆的石子数进行异或(xor),最后值为0则先手输,否则先手胜. ======== ...

  4. ural 1519 fomular 1 既插头DP学习笔记

    直接看CDQ在2008年的论文吧. 个人认为她的论文有两个不明确的地方, 这里补充一下: 首先是轮廓的概念. 我们在进行插头DP时, 是从上往下, 从左往右逐个格子进行的, 已经处理的格子与未经处理的 ...

  5. 2016北京集训测试赛(十三) Problem B: 网络战争

    Solution KD tree + 最小割树

  6. 记录一次(xheditor-1.1.6-zh-cn.min.js)的错误:Cannot read property 'match' of undefined的问题解决

    由于使用了xheditor富文本框,且这个版本是2011年开发的系统,当时只有IE8,所以一切正常. 但是问题来了,今天使用IE11测试和谷歌浏览器测试,发现一直报这个错误: 且google了一下,没 ...

  7. 基于WPF系统框架设计(7)-TextBox/PasswordBox在ViewModel中支持回车命令

    应用场景 我现在做一个系统登录功能,要求在PasswordBox上输完密码后回车,能够响应Enter事件,并执行ViewModel中对应的方法.如果登录成功则隐藏当前窗口显示主窗体,登录失败则焦点返回 ...

  8. 安全 -- mysql参数化查询,防止Mysql注入

    参数化查询(Parameterized Query 或 Parameterized Statement)是指在设计与数据库链接并访问数据时,在需要填入数值或数据的地方,使用参数(Parameter) ...

  9. php分页显示文章列表

    <div class="content"> <ul> <?php $querySel = "select * from news where ...

  10. 获取安装后Apache、MySQL、Nginx、PHP编译时参数

    # cat /usr/local/apache2/build/config.nice      //获取Apache编译时的参数 #!/bin/sh # #Created by configure & ...