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

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

很多同学都在学校学了电脑的编程,现在的书籍大部分都是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. java网络编程(三):一个类似QQ的聊天程序

    客户端: package QQ; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import ...

  2. 自定义的类型放入STL的set中,需要重载自定义类中的“<”符号(转)

    在以前学习STL的时候,曾经学到过,如果要将自定义的类型放入到set中的话,就需要重载“<”符号,原因是set是一个有序的集合,集合会按照“<”比较的大小,默认按照从小到大的顺序排列.假设 ...

  3. Linux下的软连接和硬链接

    由于教学上的原因,需要下载Android源码,后来使用repo时,系统提示需要python2,我的系统中是两个都有的,但是默认是python3,无法下载,通过创建了个链接搞定,下面就来说说linux下 ...

  4. Android开发基础(java)14

    Java语言与其他编程语言的最大不同之处在于:java有专门的异常处理机制,实现对各类异常情况进行有效控制. 一.基本概念:异常和错误的区别与联系: (1).定义形式不同:异常为exception:错 ...

  5. Python实现简单的Web服务器 解析

    代码来源https://www.shiyanlou.com/courses/552,对它进行理解,注释 #-*- coding:utf-8 -*- import BaseHTTPServer clas ...

  6. Educational Codeforces Round 40 (Rated for Div. 2)

    A. Diagonal Walking time limit per test 1 second memory limit per test 256 megabytes input standard ...

  7. Codechef Chef and Triangles(离散化+区间并集)

    题目链接 Chef and Triangles 先排序,然后得到$m - 1$个区间: $(a[2] - a[1], a[2] + a[1])$ $(a[3] - a[2], a[3] + a[2]) ...

  8. 参数化1--jmeter参数化数据(_csvread函数、用户自定义变量等)

    以下是转载内容,仔细看过后,觉得用得最多的应该是csvread函数.用户自定义变量以及CSV DATA CONFIG控制器这几个,但是做练习之后,在结果树和聚合报告中怎么查看执行结果是个问题,没找到对 ...

  9. 2016北京集训测试赛(十七)Problem C: 数组

    Solution 线段树好题. 我们考虑用last[i]表示\(i\)这个位置的颜色的上一个出现位置. 考虑以一个位置\(R\)为右端点的区间最远能向左延伸到什么位置: \(L = \max_{i \ ...

  10. Linux使用cd回到上一目录

    //返回上一级目录 cd .. //返回用户主目录 cd 或 cd ~ //返回根目录 cd /