Red de conocimiento informático - Material del sitio web - Cómo entender la programación orientada a combinadores

Cómo entender la programación orientada a combinadores

[Cita] 1. Conceptos básicos:

1.1 Una exploración preliminar de clases y objetos

Si me preguntas, si es un lenguaje orientado a procesos o un lenguaje orientado a objetos, lo primero que quiero decirle es ¡Son clases y objetos! -------- "¿De qué está hecho este mundo?" Si le pides a diferentes personas que respondan esta pregunta, obtendrás diferentes respuestas. Si es químico, es posible que le diga: "¿Por qué molestarse en preguntar? El mundo está formado por sustancias químicas como moléculas, átomos, iones, etc." ¿Y si eres pintor? Podría decirte: "El mundo está hecho de diferentes colores". ...Jaja, ¡hay diferentes opiniones! Pero sería mucho más interesante si dejaras que un taxónomo piense en el problema. Él te dirá que "el mundo está hecho de diferentes tipos de cosas y ¡Bien!". Como programadores orientados a objetos, ¡debemos considerar el problema desde la perspectiva de un taxónomo! Sí, este mundo está formado por animales, plantas, etc. Los animales se dividen a su vez en animales unicelulares, animales multicelulares, mamíferos, etc. Los mamíferos se dividen a su vez en humanos, elefantes, tigres... ¡y así sucesivamente!

Ahora, desde una perspectiva abstracta, ¡definamos “clase”! Quiero decir, desde un punto de vista abstracto, usted me responde "¿Qué es un ser humano?" Primero echemos un vistazo a algunas de las características de los seres humanos. Esta característica incluye atributos (algunos parámetros, valores) y métodos (algunos comportamientos). , otro ¡Qué puedes hacer tú!). Todo el mundo tiene atributos como altura, peso, edad, tipo de sangre, etc. Las personas pueden trabajar, pueden caminar erguidas, pueden usar sus propias mentes para crear herramientas, ¡y así sucesivamente! La razón por la que los humanos se pueden distinguir de otros tipos de animales es que cada uno tiene los atributos y métodos del grupo humano. ¡La "humanidad" es sólo un concepto abstracto, es sólo un concepto, es una entidad inexistente! ¡Pero todos los objetos con los atributos y métodos del grupo "humano" se llaman personas! ¡Este objeto "persona" es una entidad real! Cada uno es un objeto del grupo de personas. ¿Por qué los tigres no son humanos? ¡Porque no tiene los atributos y métodos del grupo humano, los tigres no pueden caminar erguidos, no pueden utilizar herramientas, etc.! ¡Entonces los tigres no son humanos!

Se puede observar que una clase describe un grupo de objetos con las mismas características (propiedades) y el mismo comportamiento (métodos). ¡En los programas, las clases son en realidad tipos de datos! Por ejemplo: números enteros, decimales, etc. Los números enteros también tienen un conjunto de propiedades y comportamientos. La diferencia entre los lenguajes orientados a procesos y los lenguajes orientados a objetos es que los lenguajes orientados a procesos no permiten a los programadores definir tipos de datos por sí mismos, ¡sino que solo pueden usar los tipos de datos integrados en el programa! Para simular el mundo real y resolver mejor los problemas, a menudo necesitamos crear los tipos de datos necesarios para resolver el problema. La programación orientada a objetos nos proporciona una solución.

1.2 Tipos de datos y funciones integrados:

Los programas informáticos deben realizar un seguimiento de tres atributos básicos al almacenar datos:

1. Dónde se almacena la información;

2. ¿Cuál es el valor almacenado?

3. Qué tipo de información se almacena;

¡Echemos un vistazo a los tipos de datos integrados de los lenguajes de programación! (Jaja, esto es difícil de decir, porque cada idioma tiene su propio tipo de datos único, pero después de todo, son una minoría. Por ejemplo, hay datos de tipo byte en JAVA, pero no en C++. ¡Espero que puedas hacer inferencias! ) Por ejemplo, entero "int", datos de tipo punto flotante "float". Cadena "Cadena", así como matrices y estructuras, etc. Sin embargo, al escribir un programa, crearemos un tipo de variable o constante según sea necesario. Por ejemplo: dado que necesitamos crear una variable entera i como 5, podemos hacer esto, int i = 5 y según sea necesario, tengo. Es posible cambiar el valor de i, es decir, reasignarlo, por ejemplo, si es igual a 6, se puede cambiar a i = 6 cuando sea necesario, de esto sabemos que la cantidad que puede cambiar en el; El "valor" se llama variable. Una cantidad que no cambia se llama constante. Se declara utilizando la palabra clave count en C++ y la palabra clave final en JAVA.

Dado que los formatos de declaración en diferentes idiomas son diferentes, no los presentaré uno por uno aquí. Consulte los libros relevantes para obtener contenido detallado.

Aquí analizamos principalmente las funciones. Podemos pensar en las funciones como una "caja negra que implementa una función específica" ------- Esta función la configura usted Por ejemplo: Ahora yo. Te preguntan "¿A qué es igual 2+3"? Creo que puedes responderme rápidamente igual a 5. ¡Analicemos qué información contiene esta frase! En primer lugar, quiero imaginar tu cerebro como una caja negra. No sé ni necesito saber cómo funciona tu cerebro (es decir, cómo calcula). Lo único que me importa es a qué información le envío. ¿tú? ¿Qué hiciste con la información? ¿Y qué información me devolviste? Debo recordarles que cada método devolverá un mensaje a la persona que llama, excepto el constructor (lo presentaré en detalle más adelante). Ahora necesito considerarme un programador, ¿y tú? ¡Por supuesto que es una computadora! Nadie es tan inteligente cuando se trata de cálculos. Solo se ejecutará en un formato específico que se haya acordado de antemano. Si quiero que tenga las funciones mencionadas anteriormente, ¡primero tengo que definir este cuadro negro! Primero, tengo que decirle al cuadro negro que habrá dos valores enteros para usted (este es el llamado parámetro, que es la información que el programador debe darle al cuadro negro), y luego necesito para definir la operación interna de la caja negra para implementar la suma de estos dos números enteros (esto es La caja negra realiza cualquier procesamiento de los datos de acuerdo con sus necesidades). Finalmente, márcalo y devuélveme un valor que también sea un número entero (esta es la información que el cuadro negro devuelve al programador). Una función ha sido definida de esta manera, echemos un vistazo al formato de escritura:

int addnum(int x,int y){

return x+y;

}

El significado específico es el siguiente:

int /*tipo de valor de retorno*/ addnum /*nombre del método (cuadro negro)*/ (int x, int y/*pass Parámetros de entrada*/){

return x+y; /*El método interno es pensar en un método (para implementar la operación de suma) y usar return para devolver el resultado. la persona que llama*/

}

En primer lugar, ¡preste atención a la declaración de "devolución" anterior! ¡El significado de la palabra clave return es devolver la información inmediatamente posterior a la persona que llama! Igual que arriba, me responderás porque te pregunto, si no te pregunto, ¡no tienes que responderme! Lo mismo ocurre en las computadoras. ¿Dónde debería llamarse esta función? Sólo te puedo decir, ¡llámalo donde lo necesites! Por supuesto, puede cambiar los parámetros, los valores de retorno y la implementación interna según sea necesario. Para obtener detalles específicos sobre cómo definir y llamar, debe consultar la información relevante. ¡Solo te estoy dando una idea aquí!

A veces te encontrarás con un problema así, ¡te pido que recuerdes que mi edad es 20 años! ¡Literalmente, no me devolviste ninguna información! Sin embargo, de hecho, me devolvió información y el contenido de la información era "sin información, es decir, sin valor de retorno nulo". El procedimiento específico es el siguiente:

int myAge = 0;

int a=20;

void remAge(int a){

myAge=a;

}

La descripción de la función específica es la siguiente:

int myAge =0 //Definir e inicializar mi edad a 0; ;

int myAge =0; p>

int a=20; /*Definir variable a igual a 20*/

void /*El tipo de valor de retorno es no tipo de valor de retorno*/ remAge /*Nombre de función*/(int a / *Parámetros entrantes*/){

myAge=a; //Método de implementación interna, ¡tenga en cuenta que no hay retorno! ! !

}