¿Qué son los tipos de datos abstractos?
En cuanto a las estructuras de datos, siempre escribimos programas para completar una función o propósito, pero no importa qué programas y códigos son en realidad algunas instrucciones * * * Para decirlo sin rodeos, describen "cómo hacerlo". " , pero saber cómo hacerlo es sólo la mitad del problema. Saber "qué hacer", es decir, quién era el destinatario de esas instrucciones, es un dato naturalmente relevante. Por ejemplo, en la gestión de información de estudiantes, la instrucción es agregar estudiantes. Entonces su objeto es la información del estudiante y otros datos, la instrucción son las estadísticas de desempeño y el objeto son los datos del desempeño del estudiante. En nuestro programa, los datos también deben tener una presentación organizativa muy clara. Sólo entonces podremos escribir instrucciones sobre esta entidad específica; por ejemplo, los datos de los estudiantes se pueden definir como una matriz multidimensional. Solo de esta manera podemos saber que la suma específica es agregar un elemento de matriz sin asignar un valor. Por tanto, las estructuras de datos están interrelacionadas y tienen alguna estructura organizativa.
Los tipos de datos abstractos son más concretos que las estructuras de datos. No nos basta con tener estructuras de datos porque los datos son diversos. Para diferentes datos, podemos utilizar diferentes métodos. Por ejemplo, los datos de los estudiantes se pueden aumentar o disminuir y los datos de las calificaciones se pueden calcular aritméticamente. Pero ¿por qué abstracto? Es decir, no es un tipo base para un entero concreto o un tipo de carácter, sino el problema real que queremos resolver. Corresponde al tipo de datos descrito en el mundo real, corresponde a la entidad en el mundo real y este tipo de datos abstracto también incluye operaciones que se pueden realizar en él. Por ejemplo, definimos un tipo de datos llamado "Estudiante", puedo definir un almacenamiento estructurado similar a una tabla para los datos específicos y también puedo definir algunas operaciones, como agregar estudiantes y eliminar estudiantes. Estas dos partes juntas forman el tipo de datos abstracto "estudiante".
Me pregunto si lo entiendes.
Pregunta 2: ¡Iré! ¿Qué es exactamente un tipo de datos abstracto y para qué se utiliza? Un tipo de datos abstracto es un tipo de datos basado en una relación lógica y un conjunto de operaciones definidas en ella. En términos generales, la definición de la estructura de datos y todas las operaciones en la estructura de datos se colocan juntas, lo que hace que parezca ordenado. Por ejemplo, el tipo de datos abstracto de una tabla lineal es la definición matemática de una tabla lineal, que reúne una serie de funciones como encontrar la longitud de una tabla lineal, determinar si está vacía, insertar y eliminar elementos, etc. en. Solo necesita comprenderlo, principalmente para comprender el proceso de implementación de cada función.
Pregunta 3: ¿Para qué sirven los tipos de datos abstractos? ¿Cómo usarlo? Los tipos de datos Premier se refieren a tipos de datos distintos de los tipos de datos básicos. ¿Qué es un tipo? es una especie de dato. Los tipos de datos básicos son los datos más básicos e indivisibles, generalmente enteros, punto flotante y caracteres. Los tipos de datos abstractos son nuevos tipos de datos que se combinan a partir de varios tipos de datos básicos. Este tipo está definido por el usuario y tiene más funciones y operaciones que los tipos de datos básicos, y generalmente incluye estructuras y clases. De hecho, para decirlo sin rodeos, los tipos de datos abstractos consisten en empaquetar algunos tipos de datos básicos relacionados y luego usarlos como nuevos tipos de datos.
En cuanto a la finalidad de cortar, es muy útil. Por ejemplo, si desea administrar la información de una persona, si solo usa tipos de datos básicos, debe definir muchas variables de tipos de datos como nombre, sexo, lugar de nacimiento, fecha de nacimiento, etc., lo cual es muy inconveniente de operar. Si se implementara con datos abstractos, sería simple. Simplemente empaquete esta información en un nuevo tipo de datos y defina dicha variable directamente.
Las clases en C++ implementan mejor la función de encapsulación, esta es la clase. Las clases hacen que los tipos de datos abstractos sean más operables y verdaderamente orientados a objetos. En cuanto al uso, siempre que hayas aprendido C++, debes saber cómo usar las clases, ¿verdad? Así es como se usa. Quizás ahora piense que esta operación es más problemática y no tan simple como el lenguaje C. Pero cuando un día ingrese a la empresa, se dará cuenta de lo excelente que es la programación orientada a objetos y de cómo puede ayudarlo a desarrollarse de manera más eficiente.
Al mismo tiempo te digo que no sabes operar responsablemente, lo que sólo demuestra que tu programación no es suficiente. En el ámbito de la programación, recuerda siempre una frase: El acero se hace. Programar simplemente leyendo libros o escuchando las explicaciones del profesor no funcionará. Tienes que practicarlo tú mismo para dominarlo realmente.
Pregunta 4: ¿Cuál es el uso de definiciones de tipos de datos abstractos en estructuras de datos? Escriba un tipo de datos como tipo base y estas operaciones abstractas se convertirán en funciones miembro de ese tipo. Si la interfaz externa es de dominio público, las demás interfaces están protegidas o privadas, según el caso.
Después de escribir el tipo básico, declara el objeto para que utilice estas operaciones.
Pregunta 5: En estructuras de datos, ¿qué es un tipo de datos abstracto? 1 Un tipo de datos abstracto (ADT para abreviar) se refiere a un modelo matemático y un conjunto de operaciones definidas en este modelo matemático.
2. Los tipos de datos abstractos deben implementarse mediante tipos de datos inherentes (tipos de datos implementados en lenguajes de programación de alto nivel).
3. Un tipo de datos abstracto es un modelo de datos y un conjunto de operaciones definidas en él, independientemente de la representación.
4. Al definir un tipo de datos abstracto, debe proporcionar su nombre y el nombre del operador de cada operación, es decir, el nombre de la función, y especificar los atributos de los parámetros de estas funciones. Una vez que se define e implementa un tipo de datos abstracto, se puede utilizar tan fácilmente como un tipo de datos básico en programación.
Pregunta 6: ¿Cuáles son las diferencias y conexiones específicas entre los tipos de datos abstractos y las estructuras de datos? Los cinco puntos son estructuras de datos, tipos de datos y tipos de datos abstractos. Estos tres términos son diferentes y similares literalmente, lo que refleja sus diferencias y conexiones en significado.
Estructura de datos es un término ampliamente utilizado en todos los campos de la informática y la tecnología. Se utiliza para reflejar la composición interna de los datos, es decir, de qué componentes están compuestos los datos, cómo se forman y qué estructura presentan. Las estructuras de datos se pueden dividir en estructuras de datos lógicas y estructuras de datos físicas. La estructura de datos lógica refleja la relación lógica entre los datos de los componentes y la estructura de datos físicos refleja la disposición de almacenamiento de los datos de los componentes en la computadora. La estructura de datos es la forma en que existen los datos.
vData se clasifica según la estructura de datos y los datos con la misma estructura de datos pertenecen a la misma categoría. Una colección de los mismos datos se denomina tipo de datos. En los lenguajes de programación de alto nivel, los tipos de datos se utilizan para explicar las propiedades de los datos en la clasificación de datos. Es una propiedad de los datos. Este atributo limita el rango de cambios en los datos. Para solucionar el problema, los lenguajes de alto nivel definen una serie de tipos de datos según el tipo de estructura de datos. Diferentes lenguajes de alto nivel definen diferentes tipos de datos. Los tipos de datos definidos por el lenguaje Pascal se muestran en la Figura 1-8.
Entre ellos, los tipos de datos simples corresponden a estructuras de datos simples; los tipos de datos construidos corresponden a estructuras de datos complejas; en las estructuras de datos complejas, los datos componentes en sí permiten estructuras de datos complejas, por lo que los tipos de datos construidos permiten el anidamiento; el tipo de puntero corresponde a la relación entre los datos de los componentes en la estructura de datos. Es un tipo de datos simple en la superficie, pero en realidad apunta a datos de componentes complejos, es decir, los datos en el tipo de datos de la estructura, así que aquí está. no se clasifica como un tipo de datos simple o un tipo de datos estructurados, sino como una categoría separada.
La estructura de datos refleja la estructura interna de los datos, que a menudo se describe mediante un diagrama de estructura: cada componente de los datos se considera como un nodo, representado por un cuadro o círculo, y la relación entre los datos del componente están representados por las Las conexiones entre nodos están representadas por flechas. Si los datos del componente tienen su propia estructura, esa estructura está anidada. Anidar aquí también permite el anidamiento recursivo.
Debido a la introducción de datos de puntero, se pueden construir varias estructuras de datos complejas. Dependiendo de la relación entre los datos componentes en la estructura de datos, las estructuras de datos se pueden dividir en lineales y no lineales. En las estructuras de datos no lineales, existen capas y cuadrículas. Debido a que los tipos de datos se dividen según las estructuras de datos, una estructura de datos corresponde a un tipo de datos. Los tipos de datos también se dividen en lineales y no lineales, jerárquicos y mallados según la estructura que presentan los datos en este tipo. La descripción del tipo de una variable de datos en un lenguaje de alto nivel debe ser un tipo de datos correspondiente a la estructura de datos desde la cual se lee la variable.
Las estructuras de datos más utilizadas son las estructuras de matrices y las estructuras de registros. Las características de esta estructura de matriz son:
El número de datos de los componentes es fijo y la relación lógica entre ellos se refleja en el número de serie de los datos de los componentes (o el subíndice de la matriz). Estos datos de componentes están organizados uno por uno en orden de número de serie.
Cada dato componente tiene la misma estructura (estructura simple o estructura compleja) y por lo tanto pertenecen al mismo tipo de datos (tipo de datos simple o tipo de datos estructurados respectivamente). Este mismo tipo de datos se denomina tipo primitivo.
Todos los datos de los componentes se organizan secuencialmente en unidades de almacenamiento continuas.
En resumen, la estructura de matriz es una estructura lineal y unificada a cuyos datos componentes se puede acceder de forma aleatoria. Debido a estas buenas propiedades, esta estructura es la más utilizada. En lenguajes de alto nivel, el tipo de datos correspondiente a la estructura de matriz es el tipo de matriz, es decir, la variable de datos de la estructura de matriz debe describirse como una matriz [I] de T0, donde I es el tipo de subíndice de la matriz. estructura, y T0 es el tipo base de la estructura de matriz.
La estructura de registro es otra estructura de datos comúnmente utilizada. Sus características son:
Al igual que la estructura de matriz, el número de datos de los componentes es fijo. Sin embargo, no existe un orden natural entre los datos de los componentes, todos están en pie de igualdad. Cada dato componente se llama dominio y tiene un nombre de dominio. Diferentes dominios tienen diferentes nombres de dominio.
Diferentes campos permiten diferentes estructuras, por lo que se les permite pertenecer a diferentes tipos de datos.
Al igual que las estructuras de matriz, se puede acceder a ellas de forma aleatoria, pero el método de acceso depende del nombre de dominio.
En lenguajes de alto nivel, el tipo de datos correspondiente a la estructura del registro es el tipo de registro. Las variables de datos de la estructura de registro deben representar...》》;
Pregunta 7: La base de la clase de tipo de datos abstracto: el tipo de datos abstracto (ADT, tipo de datos abstracto) se refiere a algunos datos y el ejecución de estos datos Naturaleza operativa * * *. Estas operaciones no solo describen datos para otras partes del programa, sino que también permiten que otras partes del programa cambien los datos. El uso de la palabra "datos" en el concepto de "tipo de datos abstractos" es algo arbitrario. Un ADT puede ser un formulario gráfico y todas las operaciones que puedan afectar al formulario también puede ser un archivo y operaciones sobre este archivo o una tabla de tarifas de seguro y operaciones relacionadas, etc. Para comprender la programación orientada a objetos, primero debemos comprender ADT. Las clases desarrolladas por programadores que no entienden ADT son solo "clases" de nombre; de hecho, esta "clase" es solo un montón de datos y subrutinas ligeramente relacionados. Sin embargo, después de comprender ADT, los programadores pueden escribir clases que sean fáciles de implementar inicialmente y fáciles de modificar más adelante. Cuando los libros de texto de programación tradicionales hablan de tipos de datos abstractos, siempre lo puntúan con algo de matemáticas. Estos libros tienden a decir algo como esto: "Puedes pensar en un tipo de datos abstracto como un modelo matemático que define un conjunto de operaciones". Estos libros pueden dar la impresión de que nunca usarás un tipo de datos abstracto, a menos que hipnotices. él. No tiene ningún sentido interpretar un tipo de datos abstracto de forma tan vacía. Los tipos de datos abstractos le permiten manipular entidades como lo haría en el mundo real sin tener que manipular implementaciones de bajo nivel. Qué emocionante es esto. En lugar de insertar nodos en una tabla vinculada, puede agregar celdas de datos a una hoja de cálculo, o un nuevo tipo a un conjunto de tipos de formulario, o vagones a un modelo de tren. ¡Profundice para encontrar la energía que puede funcionar en el dominio del problema, no en el dominio de implementación subyacente! El ejemplo de requisitos de ADT requiere un ejemplo de ADT. Para comenzar la discusión, aquí hay un ejemplo para ver en qué situaciones sería útil ADT. Continuaremos discutiendo los detalles en profundidad con ejemplos. Suponga que está escribiendo un programa que controla el texto que se muestra en la pantalla con diferentes fuentes, tamaños de fuente y atributos de texto (como negrita, cursiva, etc.). ).Parte de la función de este programa es controlar la fuente del texto. Si usa ADT, puede tener un conjunto de subrutinas que manipulen las fuentes en relación con los datos asociados. Los datos relevantes incluyen el nombre de la fuente, el tamaño de la fuente y las propiedades del texto. Estas subrutinas y datos se integran en un ADT. Sin ADT, las fuentes sólo se pueden manipular en forma de mosaico. Por ejemplo, si quisiera cambiar el tamaño de fuente a 12 puntos, lo que tendría exactamente 16 píxeles de altura, escribiría un código como este: currentFont.size = 16 Si hubiera desarrollado una biblioteca de subrutinas, el código probablemente se vería mejor Un punto: fuente actual. tamaño = puntostopixels(12) o puede darle a esta propiedad un nombre más específico. Por ejemplo: fuente actual. sizeonpixels = pointtopixels(12), pero no puedes usar currentFont.sizeInPixels y currentFont.sizeInPoints al mismo tiempo, porque si usas ambos miembros de datos al mismo tiempo, currentFont no puede decir cuál usar.
Además, si necesita modificar el tamaño de fuente en muchas partes del programa, dichas declaraciones estarán dispersas por todo el programa. Si necesita poner la fuente en negrita, puede escribir la siguiente declaración, que utiliza el operador lógico u y la constante hexadecimal de 16 0x 02:fuente actual. propiedad = fuente actual. atributo o 0x02. Si tiene suerte, el código puede ser más claro que esto. Sin embargo, los mejores resultados que puedes obtener si utilizas el método patchwork son los siguientes: currentfont. propiedad = fuente actual. Propiedad o negrita o esta: currentFont.bold = True. En lo que respecta al tamaño de fuente, estos métodos tienen una limitación, es decir, el código de la persona que llama debe controlar directamente los miembros de datos, no hay duda...》》;
Pregunta 8: Introducción a los tipos de datos abstractos La descripción de un tipo de datos abstractos incluye dar el nombre del tipo de datos abstractos, las * * * relaciones de los datos y las * * * relaciones de las operaciones. Los diseñadores de tipos de datos abstractos brindan implementaciones concretas de operaciones basadas en estas descripciones, y los usuarios de tipos de datos abstractos usan tipos de datos abstractos basados en estas descripciones.
Pregunta 9: ¿Cuáles son los contenidos de la definición del tipo de datos abstractos?
No tiene sentido almacenar la estructura en la computadora para mapear la estructura lógica, y la estructura almacenada se repite.
La estructura lógica incluye mapeo de datos y relaciones de datos.
Las operaciones de datos incluyen un conjunto de operaciones básicas sobre las relaciones entre datos e imágenes.
Se han desarrollado materiales compuestos tridimensionales
Los componentes específicos de productividad incluyen mano de obra, herramientas de trabajo, imágenes de trabajo, imágenes de trabajo y materiales de trabajo.
Pregunta 10: La diferencia entre clases y tipos de datos abstractos en tipos de datos abstractos de c/c++
Tipos de datos abstractos
De hecho, es más bien una Concepto de estructura de datos.
Deberías estar familiarizado con esta clase.
Por ejemplo, necesitamos hacer una lista enlazada.
Esta vez estamos interesados en la clase A; escribir una lista enlazada,
Pero si cambia la clase v, es posible que necesite escribir una nueva lista enlazada.
Para evitar esta duplicación de trabajo
Podemos crear una plantilla para proporcionar algunas operaciones básicas.
Por ejemplo, inserción, eliminación, clasificación, etc.
Entonces todos los tipos estarán disponibles en el futuro
La más famosa es la biblioteca STL.
Lista de implementos, vector.stack, cola.
Espera
¿Usarlo?
Vector a;
Clase A { };
Pila b;
Puedes echar un vistazo al uso de STL.