もちろん、ここでは同じC++アプリケーションの2つの異なるソースコードをお見せする。1つは構造化されたもの、もう1つはオブジェクト指向のものだ：

構造化コード：
```
    #include <iostream>
    #include <string>
    #include <cmath>

    using namespace std;

    int main() {
        double base, altura, area;
        string unidad;

        cout << "Ingresa la base del triángulo: ";
        cin >> base;

        cout << "Ingresa la altura del triángulo: ";
        cin >> altura;

        cout << "Ingresa la unidad de medida (cm, m, etc.): ";
        cin >> unidad;

        area = (base * altura) / 2;

        cout << "El área del triángulo es " << area << " " << unidad << " cuadrados." << endl;

        return 0;
    }
```


オブジェクト指向のコード：
```
    #include <iostream>
    #include <string>
    #include <cmath>

    using namespace std;

    class Triangulo {
        private:
            double base;
            double altura;
            string unidad;

        public:
            Triangulo(double b, double h, string u) {
                base = b;
                altura = h;
                unidad = u;
            }

            double calcular_area() {
                return (base * altura) / 2;
            }

            void imprimir_area() {
                double area = calcular_area();
                cout << "El área del triángulo es " << area << " " << unidad << " cuadrados." << endl;
            }
    };

    int main() {
        double base, altura;
        string unidad;

        cout << "Ingresa la base del triángulo: ";
        cin >> base;

        cout << "Ingresa la altura del triángulo: ";
        cin >> altura;

        cout << "Ingresa la unidad de medida (cm, m, etc.): ";
        cin >> unidad;

        Triangulo triangulo(base, altura, unidad);
        triangulo.imprimir_area();

        return 0;
    }
```

これら2つのコードの主な違いは、前者が一連のシーケンシャルな命令として構造化されているのに対し、後者は特定のタスクを実行するために必要なデータとメソッドをカプセル化したクラスとして構造化されていることだ。

オブジェクト指向のコードでは、Triangleクラスが三角形の面積を計算して表示するのに必要なデータ（底辺、高さ、単位）とメソッド（calculate_areaとprint_area）を定義している。メイン・プログラムはTriangleオブジェクトを作成し、そのprint_areaメソッドを呼び出して結果を表示する。

一方、構造化コードでは、変数はすべてグローバルで、プログラムは単純な関数を使って必要な計算を行い、結果を表示する。

オブジェクト指向プログラミングでは、クラスのインスタンスを複数作成し、それぞれが独立して同じタスクを実行できるため、モジュール性が高まり、コードの再利用が可能になる。また、クラス内にデータやメソッドをカプセル化することで、コードの複雑さが軽減され、保守やデバッグが容易になる。一方、構造化プログラミングは、オブジェクト指向プログラミングが提供するような複雑な構造を必要としない、単純で直線的な問題に適している。
Por supuesto, aquí te muestro dos códigos fuente diferentes para una misma aplicación en C++, uno estructurado y otro orientado a objetos:

Código estructurado:

    #include <iostream>
    #include <string>
    #include <cmath>

    using namespace std;

    int main() {
        double base, altura, area;
        string unidad;

        cout << "Ingresa la base del triángulo: ";
        cin >> base;

        cout << "Ingresa la altura del triángulo: ";
        cin >> altura;

        cout << "Ingresa la unidad de medida (cm, m, etc.): ";
        cin >> unidad;

        area = (base * altura) / 2;

        cout << "El área del triángulo es " << area << " " << unidad << " cuadrados." << endl;

        return 0;
    }


Código orientado a objetos:

    #include <iostream>
    #include <string>
    #include <cmath>

    using namespace std;

    class Triangulo {
        private:
            double base;
            double altura;
            string unidad;

        public:
            Triangulo(double b, double h, string u) {
                base = b;
                altura = h;
                unidad = u;
            }

            double calcular_area() {
                return (base * altura) / 2;
            }

            void imprimir_area() {
                double area = calcular_area();
                cout << "El área del triángulo es " << area << " " << unidad << " cuadrados." << endl;
            }
    };

    int main() {
        double base, altura;
        string unidad;

        cout << "Ingresa la base del triángulo: ";
        cin >> base;

        cout << "Ingresa la altura del triángulo: ";
        cin >> altura;

        cout << "Ingresa la unidad de medida (cm, m, etc.): ";
        cin >> unidad;

        Triangulo triangulo(base, altura, unidad);
        triangulo.imprimir_area();

        return 0;
    }


La diferencia principal entre estos dos códigos es que el primero está estructurado como una serie de instrucciones secuenciales, mientras que el segundo está estructurado como una clase que encapsula los datos y métodos necesarios para realizar una tarea específica.

En el código orientado a objetos, la clase Triangulo define los datos (base, altura y unidad) y los métodos (calcular_area e imprimir_area) necesarios para calcular y mostrar el área del triángulo. El programa principal crea un objeto Triangulo y llama a su método imprimir_area para mostrar el resultado.

En cambio, en el código estructurado, todas las variables son globales y el programa utiliza funciones simples para realizar los cálculos necesarios y mostrar el resultado.

La programación orientada a objetos permite una mayor modularidad y reutilización del código, ya que se pueden crear múltiples instancias de una clase y cada una de ellas puede realizar la misma tarea de forma independiente. Además, la encapsulación de los datos y métodos dentro de una clase reduce la complejidad del código y lo hace más fácil de mantener y depurar. Por otro lado, la programación estructurada es más adecuada para problemas simples y lineales, donde no se requiere una estructura más compleja como la que ofrece la programación orientada a objetos.