通过面向过程的程序和面向对象的程序来实现模拟时钟

本文通过对比分析一个面向过程和面向对象的时钟模拟程序,展示了两者在数据存储、操控方式及初始值设定上的差异。在面向过程程序中,时钟数据是全局变量,而在面向对象程序中,数据被封装在类中,只能通过类的方法访问。这种对比突显了面向对象编程的封装特性和数据安全性。
摘要由CSDN通过智能技术生成

不管什么样的时钟,也不管各种时钟是如何运行的,它们都具有时,分,秒三个属性。除了运行,显示时间的基本功能外,还需要设置(调整)时间,设置闹钟等功能。将时钟的这些属性抽象出来,分别给出面向过程的程序和 面向对象的程序实现对时钟的模拟。

首先先来看面向过程的时钟模拟。

#include <iostream>

using namespace std;

struct clock
{
	int h;
	int m;
	int s;
};

clock myclock;

void settime(int h,int m,int s)
{
	myclock.h = (h>=0&&h<24)?h:0;
	myclock.m = (m>=0&&m<60)?m:0;
	myclock.s = (s>=0&&s<60)?s:0;
}

void showtime()
{
	cout<<myclock.h<<":";
	cout<<myclock.m<<":";
	cout<<myclock.s<<endl;
}

int main()
{
	showtime();
	settime(8,20,20);
	showtime();
	
	return 0;
}

运行结果

面对对象模拟时钟程序

#include <iostream>

using namespace std;

class clock
{
	private:
		int h;
		int m;
		int s;
		
	public:
		void settime(int H,int M,int S)
		{
			h = (H>=0&&H<24)?H:0;
			m = (M>=0&&M<60)?M:0;
			s = (S>=0&&S<60)?S:0;
		}
		
		void showtime()
		{
			cout<<h<<":";
			cout<<m<<":";
			cout<<s<<endl;
		}
};

int main()
{
	clock c;
	c.showtime();
	c.settime(8,20,20);
	c.showtime();
	
	return 0;
}

 运行结果

通过观察上面的两个程序我们可以发现以下的几点不同。

第一,在面对过程的程序中,时钟数据用一个结构型的变量存储,对时钟数据的存取通过函数来实现,由于存储时钟数据的时一个全局变量,在任何地方都可见,可以不通过函数单独存取时钟数据,在面对对象的程序中,只能通过类提供的函数来操控时钟。

第二,在面向过程的程序中,数据与对数据的操控时相互独立的,数据作为参数通过函数传递给函数。在面向对象的程序中数据与对数据的操控构成一个整体。

第三,面向过程和面型对象的程序在初始时的值不同,这是因为在面向过程的程序中,变量时全局变量,而在面向对象的程序中变量时局部变量,全局变量和局部变量在没有进行初始化时取值的方式时不一样的,这样就造成了运行结果的不同。

在面向对象的程序中,一个以class开头的类似与结构体的结构将时钟的数据与对数据进行处理的函数包括在一起,这就是c++实现的类。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值