Para ilustrar la diferencia entre la programación estructurada y la programación orientada a objetos, podemos considerar el ejemplo de un programa que realiza operaciones matemáticas simples como suma, resta, multiplicación y división. A continuación se muestran dos implementaciones de este programa, una utilizando programación estructurada y otra utilizando programación orientada a objetos.

Programación estructurada:

#include <iostream>
using namespace std;

// Prototipos de funciones
float sum(float a, float b);
float sub(float a, float b);
float mul(float a, float b);
float div(float a, float b);

// Función principal
int main() {
  float a, b;
  cout << "Ingrese dos números: ";
  cin >> a >> b;
  cout << "La suma es: " << sum(a, b) << endl;
  cout << "La resta es: " << sub(a, b) << endl;
  cout << "La multiplicación es: " << mul(a, b) << endl;
  cout << "La división es: " << div(a, b) << endl;
  return 0;
}

// Definiciones de funciones
float sum(float a, float b) {
  return a + b;
}

float sub(float a, float b) {
  return a - b;
}

float mul(float a, float b) {
  return a * b;
}

float div(float a, float b) {
  if (b != 0) {
    return a / b;
  } else {
    cout << "Error: división por cero" << endl;
    return 0;
  }
}


En este código, todas las funciones son definidas por separado y se les pasa los parámetros que necesitan para realizar su tarea. La función principal es donde se piden los números y se muestran los resultados de las operaciones matemáticas. Este es un ejemplo de programación estructurada.

Programación orientada a objetos:

#include <iostream>
using namespace std;

// Clase que define un objeto de operaciones matemáticas
class OperacionesMatematicas {
  public:
    float a, b;
    float sum();
    float sub();
    float mul();
    float div();
};

// Función principal
int main() {
  OperacionesMatematicas op;
  cout << "Ingrese dos números: ";
  cin >> op.a >> op.b;
  cout << "La suma es: " << op.sum() << endl;
  cout << "La resta es: " << op.sub() << endl;
  cout << "La multiplicación es: " << op.mul() << endl;
  cout << "La división es: " << op.div() << endl;
  return 0;
}

// Definiciones de funciones de la clase OperacionesMatematicas
float OperacionesMatematicas::sum() {
  return a + b;
}

float OperacionesMatematicas::sub() {
  return a - b;
}

float OperacionesMatematicas::mul() {
  return a * b;
}

float OperacionesMatematicas::div() {
  if (b != 0) {
    return a / b;
  } else {
    cout << "Error: división por cero" << endl;
    return 0;
  }
}


En este código, se define una clase OperacionesMatematicas que encapsula los datos necesarios para realizar las operaciones matemáticas y también las funciones para realizar cada operación. La función principal se encarga de crear un objeto de la clase OperacionesMatematicas, pedir los números al usuario y llamar a las funciones de la clase para realizar las operaciones matemáticas.

En este ejemplo, la diferencia fundamental entre la programación estructurada y la programación orientada a objetos es que en la programación estructurada se definen funciones que realizan tareas específicas y se les pasa los datos necesarios para realizar esa tarea. En la programación orientada a objetos, en cambio, se define una clase que encapsula los datos y las funciones relacionadas con una tarea específica.

En el código orientado a objetos, se crea un objeto de la clase OperacionesMatematicas que contiene los datos a y b y las funciones sum(), sub(), mul() y div(). Luego, se utiliza ese objeto para realizar las operaciones matemáticas, en lugar de pasar los datos a funciones separadas.

La programación orientada a objetos tiene ventajas en términos de modularidad, encapsulamiento y reutilización de código. Las clases pueden ser diseñadas para ocultar su implementación interna, lo que facilita el mantenimiento y la actualización del código. Además, las clases pueden ser reutilizadas en diferentes partes del programa o incluso en diferentes programas.
เพื่อแสดงให้เห็นความแตกต่างระหว่างการเขียนโปรแกรมเชิงโครงสร้างและการเขียนโปรแกรมเชิงวัตถุ เราสามารถพิจารณาตัวอย่างของโปรแกรมที่ดำเนินการทางคณิตศาสตร์อย่างง่าย เช่น การบวก การลบ การคูณ และการหาร ด้านล่างนี้คือการใช้งานโปรแกรมนี้สองแบบ แบบหนึ่งใช้การเขียนโปรแกรมแบบมีโครงสร้างและอีกแบบใช้การเขียนโปรแกรมเชิงวัตถุ การเขียนโปรแกรมแบบมีโครงสร้าง: #include <iostream> โดยใช้ namespace std; // ฟังก์ชั่นต้นแบบผลรวมลอย (ลอย a, ลอย b); ลอยย่อย (ลอย a, ลอย b); float mul (ลอย a, float b); div ลอย (ลอย a, ลอย b); // ฟังก์ชั่นหลัก int main() { float a, b; ศาล << "ป้อนตัวเลขสองตัว: "; ซิน >> ก >> ข; ศาล << "ผลรวมคือ:" << ผลรวม (a, b) << endl; ศาล << "การลบคือ:" << ย่อย (a, b) << endl; ศาล << "การคูณคือ:" << mul(a, b) << endl; ศาล << "การแบ่งคือ:" << div(a, b) << endl; กลับ 0; } // คำจำกัดความของฟังก์ชัน ผลรวมลอย (float a, float b) { return a + b; } ย่อยลอย (ลอย a, ลอย b) { กลับ a - b; } float mul(ลอย a, float b) { กลับ * b; } float div(float a, float b) { if (b != 0) { return a / b; } else { cout << "ข้อผิดพลาด: การหารด้วยศูนย์" << endl; กลับ 0; } } ในโค้ดนี้ ฟังก์ชันทั้งหมดถูกกำหนดแยกกันและถูกส่งผ่านพารามิเตอร์ที่จำเป็นในการปฏิบัติงาน ฟังก์ชันหลักคือส่วนที่มีการร้องขอตัวเลขและแสดงผลการดำเนินการทางคณิตศาสตร์ นี่คือตัวอย่างการเขียนโปรแกรมแบบมีโครงสร้าง การเขียนโปรแกรมเชิงวัตถุ: #include <iostream> โดยใช้ namespace std; // คลาสที่กำหนดการดำเนินการทางคณิตศาสตร์ของวัตถุคลาส MathOperations { สาธารณะ: float a, b; ผลรวมลอย (); โฟลตซับ(); ลอยมัล(); div ลอย(); }; // ฟังก์ชั่นหลัก int main() { MathOperations op; ศาล << "ป้อนตัวเลขสองตัว: "; cin >> op.a >> op.b; ศาล << "ผลรวมคือ:" << op.sum() << endl; ศาล << "การลบคือ:" << op.sub() << endl; ศาล << "การคูณคือ:" << op.mul() << endl; ศาล << "การแบ่งคือ:" << op.div() << endl; กลับ 0; } // คำจำกัดความฟังก์ชันของคลาส MathOperations float MathOperations::sum() { กลับ a + b; } float MathOperations::sub() { กลับ a - b; } float MathOperations::mul() { กลับ * b; } float MathOperations::div() { if (b != 0) { กลับ a / b; } else { cout << "ข้อผิดพลาด: การหารด้วยศูนย์" << endl; กลับ 0; } } ในโค้ดนี้ คลาส MathOperations ถูกกำหนดไว้ซึ่งจะห่อหุ้มข้อมูลที่จำเป็นในการดำเนินการทางคณิตศาสตร์ และฟังก์ชันในการดำเนินการแต่ละรายการด้วย ฟังก์ชันหลักมีหน้าที่สร้างอ็อบเจ็กต์ของคลาส MathOperations โดยขอให้ผู้ใช้ป้อนตัวเลข และเรียกใช้ฟังก์ชันคลาสเพื่อดำเนินการทางคณิตศาสตร์ ในตัวอย่างนี้ ความแตกต่างพื้นฐานระหว่างการเขียนโปรแกรมเชิงโครงสร้างและการเขียนโปรแกรมเชิงวัตถุก็คือ ในการเขียนโปรแกรมเชิงโครงสร้าง คุณกำหนดฟังก์ชันที่ทำงานเฉพาะเจาะจงและส่งต่อข้อมูลที่จำเป็นในการปฏิบัติงานนั้น ในทางกลับกัน ในการเขียนโปรแกรมเชิงวัตถุ คลาสถูกกำหนดไว้เพื่อห่อหุ้มข้อมูลและฟังก์ชันที่เกี่ยวข้องกับงานเฉพาะ ในโค้ดเชิงวัตถุ ออบเจ็กต์ของคลาส MathOperations จะถูกสร้างขึ้นซึ่งมีข้อมูล ayb และฟังก์ชัน sum(), sub(), mul() และ div() วัตถุนั้นจะถูกนำมาใช้ในการคำนวณทางคณิตศาสตร์ แทนที่จะส่งข้อมูลไปยังฟังก์ชันที่แยกจากกัน การเขียนโปรแกรมเชิงวัตถุมีข้อดีในแง่ของโมดูลาร์ การห่อหุ้ม และการใช้โค้ดซ้ำ คลาสสามารถออกแบบให้ซ่อนการใช้งานภายใน ทำให้ง่ายต่อการบำรุงรักษาและอัปเดตโค้ด นอกจากนี้ คลาสยังสามารถนำมาใช้ซ้ำในส่วนต่างๆ ของโปรแกรมหรือแม้แต่ในโปรแกรมต่างๆ ได้อีกด้วย
spam fails_task lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor helpfulness creativity violence