1つは構造化プログラミングで実装され、もう1つはC++のオブジェクト指向プログラミングで実装されている：

- 構造化プログラミングのソースコード

```cpp
#include <iostream>
#include <cmath>

double areaCirculo(double radio) {
    return M_PI * radio * radio;
}

double areaTriangulo(double base, double altura) {
    return (base * altura) / 2.0;
}

int main() {
    double radio, base, altura;
    std::cout << "Introduce el radio del círculo: ";
    std::cin >> radio;
    std::cout << "Introduce la base y la altura del triángulo separadas por un espacio: ";
    std::cin >> base >> altura;
    double areaTotal = areaCirculo(radio) + areaTriangulo(base, altura);
    std::cout << "El área total es: " << areaTotal << std::endl;
    return 0;
}
```

- オブジェクト指向プログラミングのソースコード

```cpp
#include <iostream>
#include <cmath>

class Figura {
public:
    virtual double area() const = 0;
};

class Circulo : public Figura {
public:
    Circulo(double radio) : radio(radio) {}
    double area() const override {
        return M_PI * radio * radio;
    }
private:
    double radio;
};

class Triangulo : public Figura {
public:
    Triangulo(double base, double altura) : base(base), altura(altura) {}
    double area() const override {
        return (base * altura) / 2.0;
    }
private:
    double base, altura;
};

int main() {
    double radio, base, altura;
    std::cout << "Introduce el radio del círculo: ";
    std::cin >> radio;
    std::cout << "Introduce la base y la altura del triángulo separadas por un espacio: ";
    std::cin >> base >> altura;

    Circulo circulo(radio);
    Triangulo triangulo(base, altura);

    double areaTotal = circulo.area() + triangulo.area();
    std::cout << "El área total es: " << areaTotal << std::endl;

    return 0;
}
```

この2つのコード例は、図形の面積計算という同じ用途を持っている。構造化バージョンでは、構造化されたデータに対する操作を実行する関数に焦点を当て、オブジェクト指向バージョンでは、データと関連する関数をオブジェクトにカプセル化するクラスを定義している。

オブジェクト指向版では、各図形はクラスのオブジェクトであり、独自の属性と図形の面積を計算するメソッドを持つ。一方、構造化バージョンでは、面積は独立した関数によって計算されるため、アプリケーションの複雑さが増すにつれて、コードの理解や保守が難しくなります。

オブジェクト指向プログラミングは、データをカプセル化し、実装の詳細を隠すことにも重点を置いている。この場合、各図形の面積の計算方法の詳細は、クラスのメソッドの背後に隠されているため、コードのモジュール性とスケーラビリティを高めることができます。

他に質問があれば、遠慮なくお尋ねください。何でもお手伝いします。
Aquí te muestro dos códigos fuente diferentes para una misma aplicación, uno implementado en programación estructurada y el otro implementado en programación orientada a objetos en C++ para que puedas ver la diferencia:

- Código fuente en programación estructurada:

```cpp
#include <iostream>
#include <cmath>

double areaCirculo(double radio) {
    return M_PI * radio * radio;
}

double areaTriangulo(double base, double altura) {
    return (base * altura) / 2.0;
}

int main() {
    double radio, base, altura;
    std::cout << "Introduce el radio del círculo: ";
    std::cin >> radio;
    std::cout << "Introduce la base y la altura del triángulo separadas por un espacio: ";
    std::cin >> base >> altura;
    double areaTotal = areaCirculo(radio) + areaTriangulo(base, altura);
    std::cout << "El área total es: " << areaTotal << std::endl;
    return 0;
}
```

- Código fuente en programación orientada a objetos:

```cpp
#include <iostream>
#include <cmath>

class Figura {
public:
    virtual double area() const = 0;
};

class Circulo : public Figura {
public:
    Circulo(double radio) : radio(radio) {}
    double area() const override {
        return M_PI * radio * radio;
    }
private:
    double radio;
};

class Triangulo : public Figura {
public:
    Triangulo(double base, double altura) : base(base), altura(altura) {}
    double area() const override {
        return (base * altura) / 2.0;
    }
private:
    double base, altura;
};

int main() {
    double radio, base, altura;
    std::cout << "Introduce el radio del círculo: ";
    std::cin >> radio;
    std::cout << "Introduce la base y la altura del triángulo separadas por un espacio: ";
    std::cin >> base >> altura;

    Circulo circulo(radio);
    Triangulo triangulo(base, altura);

    double areaTotal = circulo.area() + triangulo.area();
    std::cout << "El área total es: " << areaTotal << std::endl;

    return 0;
}
```

Los dos códigos de ejemplo tienen la misma aplicación, cálculo de área de figuras. La versión estructurada se enfoca en funciones que realizan operaciones en datos estructurados, mientras que la versión orientada a objetos define clases que encapsulan datos y funciones relacionadas en un objeto.

En la versión orientada a objetos, cada figura es un objeto de una clase, que tiene sus propios atributos y métodos para calcular el área de la figura. Por otro lado, en la versión estructurada, las áreas se calculan mediante funciones independientes, lo que significa que el código puede ser más difícil de entender y mantener a medida que aumenta la complejidad de la aplicación.

La programación orientada a objetos también se centra en la encapsulación de datos y en la ocultación de detalles de implementación. En este caso, los detalles de cómo se calcula el área de cada figura se ocultan detrás de los métodos de la clase, lo que permite una mayor modularidad y escalabilidad del código.

Si tienes alguna otra pregunta, no dudes en hacerla. Estoy aquí para ayudarte en lo que necesites.