面向对象 例题

#例35

 

#include <iostream>
#include <math.h>

using namespace std;

class Point {
public:
    Point(float x1, float y1) : x(x1), y(y1) {}

    void show() {
        cout << "圆心为: x=" << x << ", y=" << y << endl;
    }

private:
    float x, y;
};

class Circle {
public:
    Circle(float x1, float y1, float x2, float y2) : a(x1, y1) {
        r = sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
    }

    void show() {
        a.show();
        cout << "半径=" << r << ",圆面积为:" << r * r * 3.14 << endl;
    }

private:
    Point a;
    float r;
};

int main() {
    Circle b(10, 20, 13, 26.5);
    b.show();

    return 0;
}

首先,程序包含了<iostream>和<math.h>头文件,分别用于输入输出和数学函数库。然后定义了Point类,表示一个二维平面上的点,用于表示圆心。Point类有两个私有成员变量x和y,分别表示点的横纵坐标。Point类有一个构造函数用于初始化x和y的值,以及一个show()成员函数用于输出点的坐标。

接下来,定义了Circle类,表示一个圆。Circle类有两个私有成员变量:Point类的对象a,用于表示圆心;float类型的r,表示圆的半径。Circle类的构造函数接受圆心和圆上任意一点的坐标作为参数,通过计算两点之间的距离得到半径r。Circle类的show()成员函数调用Point类的show()函数输出圆心坐标,然后输出圆的半径和面积。

最后,程序的主函数创建了一个Circle对象b,设置了圆心和圆上的一点的坐标,然后调用show()函数输出圆心坐标、半径和面积。

 

在这个程序中,共定义了两个类:Point类和Circle类。这两个类都是用于实现程序功能的基本组件。下面分别解释这两个类的作用:

  1. Point类:这个类用于表示一个二维平面上的点。它包含两个私有成员变量x和y,用于存储点的横纵坐标。Point类的构造函数用于初始化x和y的值。它还包含一个show()成员函数,用于输出点的坐标。在这个程序中,Point类主要用于表示圆心。

  2. Circle类:这个类用于表示一个圆。它包含两个私有成员变量:Point类的对象a(用于表示圆心)和float类型的r(用于表示圆的半径)。Circle类的构造函数接受圆心和圆上任意一点的坐标作为参数,并通过计算两点之间的距离来得到圆的半径。它还包含一个show()成员函数,用于输出圆心坐标、半径和面积。

在这个程序中,这两个类的作用主要是将复杂问题分解为更简单的组件,使得程序更易于理解和维护。同时,类的封装特性也有助于保护数据的完整性,避免了不必要的错误。通过这两个类的组合,程序实现了计算圆的半径和面积的功能。

 

Circle b(10, 20, 13, 26.5); 这一行语句的作用是什么
 
 
 

这行代码的作用是创建一个名为b的Circle类对象,并初始化它的圆心和圆上的一个点的坐标。

Circle b(10, 20, 13, 26.5); 中,Circle 是类名,b 是对象名称,后面括号内的四个参数分别表示圆心的横纵坐标(10, 20)和圆上任意一点的横纵坐标(13, 26.5)。

在创建对象的同时,构造函数被调用,接收这四个参数。根据这四个参数,构造函数初始化圆心(创建一个名为a的Point类对象,坐标为(10, 20))并计算出圆的半径r。

通过这行代码,我们创建了一个表示圆的对象,其圆心坐标为(10, 20),并通过圆心和圆上的一个点(13, 26.5)计算出圆的半径。之后,我们可以使用该对象的成员函数(如show())来输出圆心坐标、半径和面积。

posted @ 2023-04-11 10:13  漓川  阅读(22)  评论(0)    收藏  举报