运用继承和派生进行程序设计

img


运用继承和派生,已知一个时钟的时间,需要计算若干分钟后的具体时间来进行程序设计

具体来说,可以定义一个基类Clock,包含时钟的小时和分钟两个属性,以及设置时间和显示时间的方法。然后定义一个派生类MyClock,继承基类Clock,并添加一个after方法,用于计算若干分钟后的具体时间。

下面是一个C++的示例代码:

#include <iostream>
using namespace std;

class Clock {
public:
    Clock(int h = 0, int m = 0) : hour(h), minute(m) {}
    void setTime(int h, int m) { hour = h; minute = m; }
    void showTime() { cout << hour << ":" << minute << endl; }
protected:
    int hour, minute;
};

class MyClock : public Clock {
public:
    MyClock(int h = 0, int m = 0) : Clock(h, m) {}
    void after(int m) {
        minute += m;
        hour += minute / 60;
        minute %= 60;
        hour %= 24;
    }
};

int main() {
    MyClock mc(10, 30);
    mc.showTime();
    mc.after(5);
    mc.showTime();
    return 0;
}

在这个示例代码中,我们定义了一个基类Clock和一个派生类MyClock。基类Clock包含了时钟的小时和分钟两个属性,以及设置时间和显示时间的方法。派生类MyClock继承了基类Clock,并添加了一个after方法,用于计算若干分钟后的具体时间。

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7643182
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:派生类/内嵌类的构造顺序以及构造函数的调用
  • 除此之外, 这篇博客: 动态联编和静态联编、以及多态中的 多态的发生条件 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    1. 有继承
    2. 有重写父类的虚函数
    3. 父类指针指向子类对象
    class People
    {
    public:
        //虚函数
        virtual void Mypro()
        {
    
        }
    };
    
    class xishi :public People
    {
    public:
        //重写父类的虚函数
        virtual void Mypro()
        {
            cout << "西施" << endl;
        }
    };
    
    class wangzhaojun :public People
    {
    public:
        //重写父类的虚函数
        virtual void Mypro()
        {
            cout << "王昭君" << endl;
        }
    };
    
    //同一个操作
    void doLogin(People *pro)
    {
        pro->Mypro();//产生不同的效果,这就是多态
    }
    
    void test()
    {
        People* pro = NULL;
        pro = new xishi;//不同的对象
        doLogin(pro);
        delete pro;
    
        pro = new wangzhaojun;//不同的对象
        doLogin(pro);
        delete pro;
    }
    
  • 您还可以看一下 汤燕老师的动态生成静态及伪静态技术视频教程课程中的 单页生成静态及链接优化小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    问题理解: 通过继承和派生进行程序设计,编写一个计算时钟指定时间后具体时间的程序。

    可行实现方式: 1. 创建一个Clock类,包含hour、minute和second成员变量,以及get_hour、get_minute、get_second等获取时间的成员函数。 2. 创建一个新类NewClock,继承自Clock类,新增一个add_minute成员函数,用于增加指定分钟数后的时间。在该函数中,首先获取当前时间,然后计算增加后的时间,并进行合法性判断。最后返回新增时间。 3. 如果需要调用该函数,在main函数中创建NewClock对象,调用add_minute函数并输出结果即可。

    具体代码实现:

    #include <iostream>
    using namespace std;
    
    class Clock {
    protected: // 储存时间的成员变量,子类可以继承
        int hour;
        int minute;
        int second;
    public:
        Clock(int h, int m, int s) { // 带参数构造函数
            hour = h;
            minute = m;
            second = s;
        }
        int get_hour() { return hour; } // 获取时间的函数
        int get_minute() { return minute; }
        int get_second() { return second; }
    };
    
    class NewClock : public Clock { // 新类继承Clock类
    public:
        NewClock(int h, int m, int s) : Clock(h, m, s) { } // 使用基类构造函数初始化
        Clock add_minute(int minute_offset) { // 新增函数,用于增加指定分钟数后的时间
            int new_hour = hour;
            int new_minute = minute + minute_offset;
            int new_second = second;
            // 判断时间合法性
            if (new_minute >= 60) {
                new_hour += new_minute / 60;
                new_minute %= 60;
            }
            if (new_hour >= 24) {
                new_hour %= 24;
            }
            // 返回增加后的时间
            Clock new_time(new_hour, new_minute, new_second);
            return new_time;
        }
    };
    
    int main() {
        NewClock my_clock(9, 30, 45); // 创建对象
        Clock new_time = my_clock.add_minute(75); // 调用函数
        cout << "增加 75 分钟后的时间为:" << endl;
        cout << "小时:" << new_time.get_hour() << endl;
        cout << "分钟:" << new_time.get_minute() << endl;
        cout << "秒钟:" << new_time.get_second() << endl;
        return 0;
    }
    

    运行结果:

    增加 75 分钟后的时间为:
    小时:10
    分钟:45
    秒钟:45