当前位置: 首页 > news >正文

初始面向对象化编程(c++和java)

我一直从事的是PLC方面的工作,编程的概念也只有PLC专属的编程语言,如梯形图、结构化文本等,随着工业界的发展,也逐渐向IT界靠,也开始接触C、VB之类的东西,没有系统的学过C、VB,都是自己看书或是需要什么功能就去网上寻求答案,所以对C、VB的认知基本为零,随着工作的需要,逐渐也接触多了,开始对此产生了兴趣,因此在这开了博客,以记录我学习的过程。

之前有过c语言的自学,一些基本语法和规则就不再叙述,我将从零开始学C++和JAVA,希望在我入门之前这两门语言不要被淘汰。~~~^_^~~~ (为啥没有插入表情的功能呢?)

最早接触的是java,就从它开始吧。

关于java的由来,百度一下就有很多,这就不多说了,我只记录一些自己认为是重点的东西。

首先是java开发的工具:

JDK:java的开发工具,选择java se版本,安装完成后需要对系统的环境变量进行配置,方法如下:

右键“我的电脑”==》“属性”==》“高级”==》“环境变量”==》在“系统变量中”找到“Path”属性编辑,将java.exe和javac.exe所在的路径添加进去,一般它们在JDK安装目录下的“bin”目录下,最后用“;”结束。

NetBeans IDE:Sun公司提供的一个java开发平台,还没用过,先make,以后用再做记录。

 安装好软件后就开始吧!

基本的概念就不重复了,下面通过实例进行说明:

 1 /*
 2 创建一个圆的模型,通过模型创建2个圆,并分别计算它们的周长和面积
 3 */
 4 
 5 class C    //定义圆的类(模型)
 6 {
 7     private double r;    //定义半径变量r,其中private表示该变量为私有的,除本身的类能访问,其他地方都不能访问
 8     final private double PI = 3.1415926;    //定义PI常量,其中final表示该变量为最终状态,不能修改
 9     
10     public double perimeter()    //定义计算周长函数,其中public表示该函数是公共的,任何地方都能访问
11     {
12         return 2*r*PI;    //计算圆周长
13     }
14     
15     public double area()    //定义计算面积函数
16     {
17         return PI*r*r;    //计算圆面积
18     }
19     
20     public C(double r)    //定义有参构造函数,函数名与类名相同,并且没返回值
21     {
22         this.r = r;    //this.r指的是类的变量,而非函数的变量
23     }
24 
25 }
26 
27 class Round    //定义启动类
28 {
29     public static void main(String[] aaa)    //static表示静态的
30     {
31         C a1 = new C(6.0);    //创建一个对象a1
32         C a2 = new C(3.5);    //创建一个对象a2
33         
34         //printf()函数用法与c语言的一致,只是要注意调用的格式
35         System.out.printf("a1的周长:%f\t", a1.perimeter());
36         System.out.printf("a1的面积:%f\n", a1.area());
37         System.out.printf("a2的周长:%f\t", a2.perimeter());
38         System.out.printf("a2的面积:%f\n", a2.area());
39         System.out.printf("两个圆的周长之和:%f\t", a1.perimeter() + a2.perimeter());
40         System.out.printf("两个圆的面积之和:%f\n", a1.area() + a2.area());
41     }
42 }
43 
44 /*
45 结果:
46 47 a1的周长:37.699111     a1的面积:113.097334
48 a2的周长:21.991148     a2的面积:38.484509
49 两个圆的周长之和:59.690259     两个圆的面积之和:151.581843
50 */

 

 写完以上代码后,保存为*.java的格式,然后打开“命令提示符”,也就是cmd.exe,通过dos命令进入*.java文件所在的文件夹,然后进行以下操作:

1.编译。输入:

javac Round.java

2.运行。输入:

java Round

注意,*.java文件的文件名最好与启动类的名字相同

 

那么,用c++怎么实现上述代码呢?

c++的编译器我用的是C-free,在编译的时候要把腾讯的电脑管家关闭,不然经常会出现电脑管家认为编译的程序是病毒就隔离了,不知道360会不会出现这种情况,晕啊~~

 1 /*
 2  创建一个圆的模型,通过模型创建2个圆,并分别计算它们的周长和面积
 3 */
 4 
 5 #include<stdio.h>    //为了比较,就选择使用stdio.h,而不用iostream 
 6 
 7 class Round    //定义圆的类(模型)
 8 {
 9     private:    //private表示以下定义的变量和函数为私有的,除本身的类能访问,其他地方都不能访问
10         double r;    ////定义半径变量r
11         const static double PI = 3.1415926; //定义PI常量,其中const表示该变量为常量,static表示该变量是静态的,如果没有static,c++不允许在该类的范围内给变量赋值的,而java可以 
12     public:    //public表示以下定义的变量和函数是公共的,任何地方都能访问
13         Round(double r)    //定义有参构造函数,函数名与类名相同,并且没返回值 
14         {
15             this->r = r;    //和java的this意义一样,注意书写方法 
16         }
17         const double perimeter()    //定义计算周长函数,const标识 perimeter()的参数不允许改变 
18         {
19             return 2*PI*r;    ////计算圆周长
20         }
21         const double area()    //定义计算面积函数
22         {
23             return PI*r*r;    //计算圆面积
24         }
25 
26 };     //注意这里需要加分号,java不加分号 
27 
28 int main(void)    //主函数 
29 {
30     Round a1(6.0);    //创建一个对象a1 
31     Round a2(3.5);    //创建一个对象a2
32 
33     printf("a1的周长:%f\t", a1.perimeter());
34     printf("a1的面积:%f\n", a1.area());
35     printf("a2的周长:%f\t", a2.perimeter());
36     printf("a2的面积:%f\n", a2.area());
37     printf("两个圆的周长之和:%f\t", a1.perimeter() + a2.perimeter());
38     printf("两个圆的面积之和:%f\n", a1.area() + a2.area());
39     
40     return 0;
41 }
42 /*
43 结果:
44 47 a1的周长:37.699111     a1的面积:113.097334
45 a2的周长:21.991148     a2的面积:38.484509
46 两个圆的周长之和:59.690259     两个圆的面积之和:151.581843
47 */

 

那么,c又是怎么写呢?

 1 /*
 2 计算圆的周长和面积 
 3 */
 4 
 5 #include<stdio.h>
 6 
 7 const double PI = 3.1415926;
 8 
 9 double perimeter(double r)
10 {
11     return 2*PI*r;
12 }
13 
14 double area(double r)
15 {
16     return PI*r*r;
17 }
18 
19 int main(void)
20 {
21     double r1,r2;
22     
23     r1 = 6.0;
24     r2 = 3.5; 
25     
26     printf("a1的周长:%f\t", perimeter(r1));
27     printf("a1的面积:%f\n", area(r1));
28     printf("a2的周长:%f\t", perimeter(r2));
29     printf("a2的面积:%f\n", area(r2));
30     printf("两个圆的周长之和:%f\t", perimeter(r1) + perimeter(r2));
31     printf("两个圆的面积之和:%f\n", area(r1) + area(r2));
32     
33     return 0;
34 }
35 /*
36 结果:
37 47 a1的周长:37.699111     a1的面积:113.097334
38 a2的周长:21.991148     a2的面积:38.484509
39 两个圆的周长之和:59.690259     两个圆的面积之和:151.581843
40 */

 

小结:

通过上述例子可以看出,java和c++的编程思路和c的编程思路是不同的,c的思路是要解决问题,先把问题分解若干个功能(函数),然后通过调用函数达到解决问题目的;而java和c++增加了对象的概念,思路是先对某个事物的属性和方法(函数)进行封装,也就是创建类,然后通过创建一个一个具体的对象,通过修改对象的属性、调用对象的方法(或类的方法)达到解决问题的目的,这样的编程方法更安全、代码重用率更高、层次感更强,更符合人的逻辑思维。

今天先总结到这儿,以后继续。

转载于:https://www.cnblogs.com/ludong1983/p/3271684.html

相关文章:

  • sqlite3数据类型
  • DEll R710服务器加内存
  • bash: vim: command not found错误解决方法
  • 总结我对文档的想法
  • Javascript 面向对象编程
  • RunJS演示代码
  • 关于 SSV-ID: 4474 POC的分析和思考
  • 服务器安全管理
  • stm8 全局变量定义 声明
  • SQL Server2005 两台服务器上的数据库同步(转载)
  • 新手学习之查看ORACLE 数据库表空间和数据表的大小
  • hdu 3586 Information Disturbing(树形dp + 二分)
  • IT界--值得收藏的10大网站
  • 卑鄙的我1
  • ssh服务故障拉起脚本
  • python3.6+scrapy+mysql 爬虫实战
  • classpath对获取配置文件的影响
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • dva中组件的懒加载
  • MySQL QA
  • Mysql5.6主从复制
  • Object.assign方法不能实现深复制
  • Python中eval与exec的使用及区别
  • SOFAMosn配置模型
  • spring boot 整合mybatis 无法输出sql的问题
  • Terraform入门 - 1. 安装Terraform
  • Vue--数据传输
  • 从零开始在ubuntu上搭建node开发环境
  • 给初学者:JavaScript 中数组操作注意点
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 如何编写一个可升级的智能合约
  • 十年未变!安全,谁之责?(下)
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • Semaphore
  • 带你开发类似Pokemon Go的AR游戏
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • (007)XHTML文档之标题——h1~h6
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (算法)Game
  • .Net CF下精确的计时器
  • .net core使用ef 6
  • .NET Core中的去虚
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .Net MVC4 上传大文件,并保存表单
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .NET 动态调用WebService + WSE + UsernameToken
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • .net中调用windows performance记录性能信息
  • .NET中两种OCR方式对比
  • [ Linux ] Linux信号概述 信号的产生