• No se han encontrado resultados

PROGRAMACIÓN 2. MSIG. Antonio Rodríguez Andrade

N/A
N/A
Protected

Academic year: 2022

Share "PROGRAMACIÓN 2. MSIG. Antonio Rodríguez Andrade"

Copied!
96
0
0

Texto completo

(1)

PROGRAMACIÓN 2

MSIG. Antonio Rodríguez Andrade

(2)

Objetivos

• Que el estudiante adquiera habilidades y destrezas en el manejo de técnicas especiales de programación orientada a objetos.

(3)

Unidades

• UNIDAD 1: Introducción

• UNIDAD 2: Contacto con C#

• UNIDAD 3: Estructuras de control y Repetitivas

• UNIDAD 4: Arreglos, estructuras y funciones

• UNIDAD 5: Programación Orientada a Objetos

• UNIDAD 6: Manejo de archivos

• UNIDAD 7: Contacto con el entorno gráfico

(4)

Introducción

(5)

Paradigmas de programación

(6)

Paradigmas de programación

En la programación imperativa, de la cual hacen parte muchos de los principales lenguajes de programación tales como C, Java y PHP, un programa se describe en términos de instrucciones, condiciones y pasos que modifican el estado de un programa al permitir la mutación de variables, todo esto con el objetivo de llegar a un resultado. En contraparte, en la programación declarativa un programa se describe en términos de proposiciones y afirmaciones que son declaradas para describir el problema, sin especificar los pasos para resolverlo; en este tipo de programas, el estado no puede ser modificado ya que todos los tipos de datos son inmutables.

De esta familia hacen parte lenguajes como Scala, Haskell, Erlang y Elixir.

(7)

Javascript

Erlang 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144,…

(8)

Técnicas de programación

Programación declarativa

Programación estucturada

Programación modular

Programación ooorientada a objetos

(9)

Programación declarativa

Paradigma de programación que está basado en el desarrollo de programas especificando o “declarando” un conjunto de condiciones, proposiciones, afirmaciones, restricciones, ecuaciones o transformaciones que describen el problema y detallan su solución. La solución es obtenida mediante mecanismos internos de control, sin especificar exactamente cómo encontrarla (tan sólo se le indica a la computadora qué es lo que se desea obtener o qué es lo que se está buscando).

(10)

Programación declarativa

Paradigma de programación que está basado en el desarrollo de programas especificando o “declarando” un conjunto de condiciones, proposiciones, afirmaciones, restricciones, ecuaciones o transformaciones que describen el problema y detallan su solución. La solución es obtenida mediante mecanismos internos de control, sin especificar exactamente cómo encontrarla (tan sólo se le indica a la computadora qué es lo que se desea obtener o qué es lo que se está buscando).

(11)

Tipos

• Los lenguajes lógicos, como Prolog.

• Los lenguajes algebraicos, como Maude y SQL

• Los lenguajes funcionales, como Haskell y Erlang

(12)

Ventajas

Se ha dicho que los lenguajes declarativos tienen la ventaja de ser razonados matemáticamente, lo que permite el uso de mecanismos matemáticos para optimizar el rendimiento de los programas.

Son fiables, elegantes y expresivos.

(13)

Programación estructurada

paradigma de programación orientado a mejorar la claridad, calidad y tiempo de desarrollo de un programa de computadora, utilizando únicamente subrutinas y tres estructuras: secuencia, selección (if y switch) e iteración (bucles for y while), considerando innecesario y contraproducente el uso de la instrucción de transferencia incondicional (GOTO), que podría conducir a “código espagueti”, que es mucho más difícil de seguir y de mantener, y era la causa de muchos errores de programación.

(14)

Ventajas

• Los programas son más fáciles de entender, pueden ser leídos de forma secuencial y no hay necesidad de hacer engorrosos seguimientos en saltos de líneas (GOTO) dentro de los bloques de código para intentar entender la lógica.

• La estructura de los programas es clara, puesto que las instrucciones están más ligadas o relacionadas entre sí.

• Reducción del esfuerzo en las pruebas y depuración.

• El seguimiento de los fallos o errores del programa (debugging) se facilita debido a su estructura más sencilla y comprensible, por lo que los errores se pueden detectar y corregir más fácilmente.

(15)

Lenguajes

• ALGOL, Pascal, PL/I y Ada

(16)

Programación modular

Paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible y manejable.

Al aplicar la programación modular, un problema complejo debe ser dividido en varios subproblemas más simples, y estos a su vez en otros subproblemas más simples. Ésta técnica se llama refinamiento sucesivo, divide y vencerás ó análisis descendente (Top-Down).

(17)

Ventajas

• Facilitan la escritura y depuración de un programa

• Localización rápida de errores

• La modificación de un módulo no afecta a los demás

• Un grupo de instrucciones que se repite en varias partes de un programa puede incluirse en un módulo y llamarlo en el programa.

(18)

Lenguajes

• C++

(19)

Programación orientada a objetos

Paradigma de programación que usa los objetos en sus interacciones, para diseñar aplicaciones y programas informáticos. Está basado en varias técnicas, incluyendo herencia, cohesión, abstracción, polimorfismo, acoplamiento y encapsulamiento.

(20)

Objeto

Compuesto de datos e información

Estado Está definido por los

métodos o mensajes a los que sabe responder dicho objeto, es decir, qué operaciones se pueden realizar con él

Comporta miento

Propiedad que lo diferencia del resto.

Identidad

Instancia de una clase. Entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad (métodos), los mismos que consecuentemente reaccionan a eventos. Se corresponden con los objetos reales del mundo que nos rodea, o con objetos internos del sistema (del programa). Es una instancia a una clase.

(21)

Conceptos básicos

Clases en POO

Las clases son declaraciones de objetos, también se podrían definir como abstracciones de objetos. Esto quiere decir que la definición de un objeto es la clase. Cuando programamos un objeto y definimos sus características y funcionalidades en realidad lo que estamos haciendo es programar una clase. En los ejemplos anteriores en realidad hablábamos de las clases coche o fracción porque sólo estuvimos definiendo, aunque por encima, sus formas.

Propiedades en clases

Las propiedades o atributos son las características de los objetos. Cuando definimos una propiedad normalmente especificamos su nombre y su tipo.

Nos podemos hacer a la idea de que las propiedades son algo así como variables donde almacenamos datos relacionados con los objetos.

(22)

Conceptos básicos

Métodos en las clases

Son las funcionalidades asociadas a los objetos. Cuando estamos programando las clases las llamamos métodos. Los métodos son como funciones que están asociadas a un objeto.

Objetos en POO

Los objetos son ejemplares de una clase cualquiera. Cuando creamos un ejemplar tenemos que especificar la clase a partir de la cual se creará. Esta acción de crear un objeto a partir de una clase se llama instanciar. Por ejemplo, un objeto de la clase fracción es por ejemplo 3/5. El concepto o definición de fracción sería la clase, pero cuando ya estamos hablando de una fracción en concreto 4/7, 8/1000 o cualquier otra, la llamamos objeto.

(23)

• Pensar en términos de objetos es muy parecido a cómo lo haríamos en la vida real. Por ejemplo vamos a pensar en un coche. Describa los atributos y los métodos

Cómo se piensa en objetos

(24)

• El diagrama de clase es una representación semi-gráfica de la clase, que ayuda al programador a visualizar cuales son las propiedades y métodos que contendrá una clase o conjunto de clases en particular.

En un diagrama de clase se pueden representar también relaciones entre clases.

Diagrama de Clase

(25)

Conociendo el lenguaje

• Operadores aritméticos

(26)

Conociendo el lenguaje

• Tipos de datos

(27)

Conociendo el lenguaje

• Tipos de datos

(28)

Conociendo el lenguaje

Procedencia operadores lógicos

• En primer lugar se realizarán las operaciones indicadas entre paréntesis.

• Después las multiplicaciones, divisiones y el resto de la división.

• Finalmente, las sumas y las restas.

• En caso de tener igual prioridad, se analizan de izquierda a derecha.

(29)

Conociendo el lenguaje

Ejercicios propuestos

• Crea un programa que calcule el producto de los números 121 y 132, usando variables.

• Crea un programa que calcule la suma de 285 y 1396, usando variables.

• Crea un programa que calcule el resto de dividir 3784 entre 16, usando variables.

(30)

Conociendo el lenguaje

Variables

• Los nombres de variables (lo que se conoce como "identificadores") pueden estar formados por letras, números o el símbolo de

subrayado (_) y deben comenzar por letra o subrayado. No deben

tener espacios intermedios. También hay que recordar que las vocales acentuadas y la eñe son problemáticas, porque no son letras

"estándar" en todos los idiomas, así que no se pueden utilizar como parte de un identificador en la mayoría de lenguajes de

programación.

Nota: Las mayúsculas y minúsculas se consideran diferentes

(31)

Conociendo el lenguaje

Ejercicios propuestos interacciones con el usuario

• Crea un programa que calcule el producto de dos números introducidos por el usuario.

• Crea un programa que calcule la división de dos números

introducidos por el usuario, así como el resto de esa división.

• Suma tres números tecleados por usuario.

• Pide al usuario una cantidad de "millas náuticas" y muestra la equivalencia en metros, usando: 1 milla náutica = 1852 metros.

(32)

Conociendo el lenguaje

Estructuras de control

if Switch

(33)

Conociendo el lenguaje

Operadores relacionales Operadores lógicos

(34)

Conociendo el lenguaje

Ejercicios propuestos

• Crea un programa que pida al usuario un número entero y diga si es par .

• Crea un programa que pida al usuario dos números enteros y diga cuál es el mayor de ellos.

• Crea un programa que pida al usuario dos números enteros y diga si el primero es múltiplo del segundo.

• Crea un programa que pida al usuario un número entero y responda si es múltiplo de 2 o de 3.

• Crea un programa que pida al usuario un número entero y responda si es múltiplo de 2 y de 3 simultáneamente.

• Crea un programa que pida al usuario un número entero y responda si es múltiplo de 2 pero no de 3.

(35)

Conociendo el lenguaje

Ejercicios propuestos

• Crea un programa que pida un número del 1 al 5 al usuario, y escriba el nombre de ese número, usando "switch" (por ejemplo, si introduce

"1", el programa escribirá "uno").

(36)

Conociendo el lenguaje

Estructuras repetitivas (bucles)

while do

while for foreach

(37)

Conociendo el lenguaje

Ejercicios propuestos

• Crea un programa que pida al usuario su contraseña (numérica).

Deberá terminar cuando introduzca como contraseña el número 1111, pero volvérsela a pedir tantas veces como sea necesario.

• Crea un "calculador de cuadrados": pedirá al usuario un número y

mostrará su cuadrado. Se repetirá mientras el número introducido no sea cero

• Crea un programa que escriba en pantalla los números del 1 al 10, usando "while".

(38)

Conociendo el lenguaje

Ejercicios propuestos

• Crear un programa que pida números positivos al usuario, y vaya

calculando y mostrando la suma de todos ellos (terminará cuando se teclea un número negativo o cero).

• Crea un programa que escriba en pantalla los números del 1 al 10, usando "do..while".

• Crea un programa que escriba 6 líneas de texto, cada una de las cuales estará formada por los números del 1 al 7. Debes usar dos variables llamadas "linea" y "numero", y ambas deben estar

declaradas en el "for".

(39)

Conociendo el lenguaje

Ejercicios propuestos

• Crea un programa que cuente cuantas veces aparece la letra 'a' en una frase que teclee el usuario, utilizando "foreach".

(40)

Conociendo el lenguaje: Excepciones

Try Catch

(41)

Conociendo el lenguaje

Tipos de datos para números enteros

(42)

Conociendo el lenguaje

Operaciones abreviadas

(43)

Conociendo el lenguaje

Ejercicios propuestos

• ¿Cuál sería el resultado de las siguientes operaciones? a=5; b=a+2; b-

=3; c=-3; c*=2; ++c; a*=b; Crea un programa que te lo muestre. ".

(44)

Conociendo el lenguaje

Tipos de datos para números reales

(45)

Conociendo el lenguaje: char y string

Cadena de caracteres

(46)

Conociendo el lenguaje

Tipos de datos booleanos

En C# tenemos también un tipo de datos llamado "booleano" ("bool"), que puede tomar dos valores: verdadero ("true") o falso ("false")

(47)

Conociendo el lenguaje

Arreglos

(48)

Conociendo el lenguaje

Ejercicios propuestos

• Un programa que pida al usuario 4 números, los memorice (utilizando un array), calcule su media aritmética y después muestre en pantalla la media y los datos tecleados.

• Crea un programa que pida al usuario 6 números enteros cortos y luego los muestre en orden inverso (pista: usa un array para

almacenarlos y "for" para mostrarlos).

• Crea un programa que pregunte al usuario cuántos números enteros va a introducir (por ejemplo, 10), le pida todos esos números, los

guarde en un array y finalmente calcule y muestre la media de esos números.

(49)

Conociendo el lenguaje

Ejercicios propuestos

• Un programa que almacene en una tabla el número de días que tiene cada mes (supondremos que es un año no bisiesto), pida al usuario que le indique un mes (1=enero, 12=diciembre) y muestre en pantalla el número de días que tiene ese mes.

(50)

Estructuras

Agrupación de datos, llamados campos, los cuales no necesariamente son del mismo tipo. Los datos que forman un "struct" pueden ser

públicos o privados

(51)

Conociendo el lenguaje

Ejercicios propuestos

• Crea un "struct" que almacene datos de una canción en formato MP3:

Artista, Título, Duración (en segundos), Tamaño del fichero (en KB).

Un programa debe pedir los datos de una canción al usuario,

almacenarlos en dicho "struct" y después mostrarlos en pantalla.

• Amplia el programa para que almacene datos de hasta 100 canciones.

Deberá tener un menú que permita las opciones: añadir una nueva canción, mostrar el título de todas las canciones, buscar la canción que contenga un cierto texto (en el artista o en el título).

(52)

Cadenas

Un programa que te pida tu nombre y lo muestre en pantalla

separando cada letra de la siguiente con un espacio. Por ejemplo, si tu nombre es "Juan", debería aparecer en pantalla "J u a n".

Un programa que pida una frase al usuario y la muestra en orden inverso (de la última letra a la primera).

Un programa que te pida tu nombre y lo muestre en pantalla como un triángulo creciente. Por ejemplo, si tu nombre es "Juan", debería

aparecer en pantalla:

(53)

Cadenas (Split)

Un programa que pida al usuario una frase y muestre sus palabras en orden inverso.

Un programa que pida al usuario varios números separados por espacios y muestre su suma.

Un programa que pida tu nombre y lo muestre con un espacio entre cada par de letras, usando "foreach".

(54)

Ejemplo completo

Crearemos un programa que pueda almacenar datos de hasta 1000 ficheros (archivos de ordenador). Para cada fichero, debe guardar los siguientes

datos: Nombre del fichero, Tamaño (en KB, un número de 0 a

8.000.000.000). El programa mostrará un menú que permita al usuario las siguientes operaciones:

1. Añadir datos de un nuevo fichero

2. Mostrar los nombres de todos los ficheros almacenados

3. Mostrar ficheros que sean de más de un cierto tamaño (por ejemplo, 2000 KB).

4. Ver todos los datos de un cierto fichero (a partir de su nombre)

5. Salir de la aplicación (como no usamos ficheros, los datos se perderán).

(55)

Funciones

Crea una función llamada "DibujarCuadrado3x3", que dibuje un cuadrado formato por 3 filas con 3 asteriscos cada una. Incluye un "Main" para probarla.

Crea una función "DibujarCuadrado" que dibuje en pantalla un cuadrado del ancho (y alto) que se indique como parámetro. Completa el programa con un Main que permita probarla.

Crea una función "DibujarRectangulo" que dibuje en pantalla un rectángulo del ancho y alto que se indiquen como parámetros. Incluye un Main para probarla.

Crea una función "DibujarRectanguloHueco" que dibuje en pantalla un rectángulo hueco del ancho y alto que se indiquen como parámetros, formado por una letra que también se indique como parámetro. Completa el programa con un Main que pida esos datos al usuario y dibuje el rectángulo.

(56)

Funciones

Crea una función "Cubo" que calcule el cubo de un número real (float) que se indique como parámetro. El resultado deberá ser otro número real.

Prueba esta función para calcular el cubo de 3.2 y el de 5.

Crea una función "Menor" que calcule el menor de dos números enteros que recibirá como parámetros. El resultado será otro número entero.

Crea una función llamada "Signo", que reciba un número real, y devuelva un número entero con el valor: -1 si el número es negativo, 1 si es positivo o 0 si es cero.

Crea una función "MostrarPerimSuperfCuadrado" que reciba un número entero y calcule y muestre en pantalla el valor del perímetro y de la superficie de un cuadrado que tenga como lado el número que se ha indicado como parámetro.

(57)

Programacion Orientada a Objetos

• Clase: Plantilla para la creación de objetos de datos según un modelo predefinido. Las clases se utilizan para representar entidades o

conceptos, como los sustantivos en el lenguaje. Está formado por atributos y métodos

• Objeto: Instancia de una clase

(58)

Ejercicios de Clases

Crea una clase llamada Persona, en el fichero "persona.cs". Esta clase deberá tener un atributo "nombre", de tipo string. También deberá tener un método "SetNombre", de tipo void y con un parámetro string, que permita cambiar el valor del nombre. Finalmente, también tendrá un método "Saludar", que escribirá en pantalla "Hola, soy " seguido de su nombre. Crea también una clase llamada PruebaPersona. Esta clase deberá contener sólo la función Main, que creará dos objetos de tipo Persona, les asignará un nombre a cada uno y les pedirá que saluden.

Para guardar información sobre libros, vamos a comenzar por crear una clase "Libro", que contendrá atributos "autor", "titulo", "ubicacion" (todos ellos strings) y métodos Get y Set adecuados para leer su valor y cambiarlo. Prepara también un Main (en la misma clase), que cree un objeto de la clase Libro, dé valores a sus tres atributos y luego los muestre.

Crea una clase "Coche", con atributos "marca" (texto), "modelo" (texto), "cilindrada"

(número entero), potencia (número real). No hace falta que crees un Main de prueba.

(59)

Programacion Orientada a Objetos

• Constructores: El objetivo de un constructor es el de inicializar un objeto cuando éste es creado. Asignaremos los valores iniciales así como los procesos que ésta clase deba realizar.

Se utiliza para crear tablas de métodos virtuales y poder así desarrollar el polimorfismo, una de las herramientas de la programación orientada a objetos (POO). Al utilizar un constructor, el compilador determina cual de los objetos va a responder al mensaje (virtual) que hemos creado. Tiene un tipo de acceso, un nombre y un paréntesis.

(60)

Programacion Orientada a Objetos

• Constructor por defecto: Un constructor por defecto es un constructor sin parámetros que no hace nada. Sin embargo será invocado cada vez que se construya un objeto sin especificar ningún argumento, en cuyo caso el objeto será iniciado con los valores predeterminados por el sistema (los atributos numéricos a ceros, los alfanuméricos a nulos, y las referencias a objetos a null)

(61)

Programacion Orientada a Objetos

• Destructores: Un destructor en algunos lenguajes de programación orientados a objetos es un método de una clase que se llama justo antes de una instancia de esa clase y se elimina de la memoria.

(62)

Programacion Orientada a Objetos

• Herencia: Mecanismo que permite crear nuevas clases partiendo de una clase o de una jerarquía de clases preexistente evitando con ello el rediseño, la modificación y verificación de la parte ya implementada

(63)

Ejercicios de Herencia

Crea una variante ampliada del ejercicio de clase de Persona. En ella, la clase Persona no cambia. Se creará una nueva clase PersonaInglesa, en el fichero

"personaInglesa.cs". Esta clase deberá heredar las características de la clase

"Persona", y añadir un método "TomarTe", de tipo void, que escribirá en pantalla

"Estoy tomando té". Crear también una clase llamada PruebaPersona2, en el fichero "pruebaPersona2.cs". Esta clase deberá contener sólo la función Main, que creará dos objetos de tipo Persona y uno de tipo PersonaInglesa, les asignará un nombre, les pedirá que saluden y pedirá a la persona inglesa que tome té.

Ejercicio Libro: crea una clase "Documento", de la que Libro heredará todos sus atributos y métodos. Ahora la clase Libro contendrá sólo un atributo "paginas", número entero, con sus correspondientes Get y Set.

Crea una clase "Vehiculo", de la que heredarán "Coche" y una nueva clase "Moto".

La clase Vehiculo contendrá todos los atributos y métodos que antes estaban en Coche, y tanto Coche como Moto heredarán de ella

(64)

Polimorfismo

• El concepto de "polimorfismo" se refiere a que una misma función (un método) puede tener varias formas, ya sea porque reciba distintos tipos de parámetros y/o en distinta cantidad, o porque incluso se aplique a distintos objetos.

(65)

Ejercicios Polimorfismo

Añade a la clase "Persona" un nuevo método Saludar, que reciba un parámetro, que será el texto que debe decir esa persona cuando salude.

Amplía el proyecto del ejercicio (Libro): la clase Libro tendrá un segundo constructor que permita dar valores al autor y el título, pero no a la ubicación, que tomará el valor por defecto "No detallada".

La clase Libro tendrá un segundo constructor que permita dar valores al autor y el título, pero no a la ubicación, que tomará el valor por defecto

"No detallada".

(66)

Static

• La palabra "static" delante de un atributo (una variable) de una clase, indica que es una "variable de clase", es decir, que su valor es el

mismo para todos los objetos de la clase.

• De igual modo, si un método (una función) está precedido por la palabra "static", indica que es un "método de clase", es decir, un

método que se podría usar sin necesidad de declarar ningún objeto de la clase.

(67)

Ejercicios

• Amplía el proyecto Libro, de modo que permita guardar hasta 1.000 libros. Main mostrará un menú que permita añadir un nuevo libro o ver los datos de los ya existentes.

(68)

Bases de datos

(69)

69

Información y datos

• La información se registra mediante datos.

Los datos se pueden mecanizar.

• Los datos se interpretan para obtener una información.

La interpretación depende del hombre, no se “puede” mecanizar.

• Es necesario un almacenamiento persistente.

(70)

70

Datos

• Tipo de información representada con datos:

Atómica:

Números (enteros, coma flotante)

Cadenas de caracteres

Estructurada:

Números complejos (partes real e imaginaria)

Registros

Ej: coche(matrícula,modelo,color)

(71)

71

• Fichero: almacenamiento persistente (no volátil) de datos usado para representar información.

Ejemplos: Ficheros de texto, documentos XML

Base de datos: colección persistente de datos relacionados usada para representar información.

Ejemplos MS Access, MS SQL Server, MySQL, PostgreSQL, Oracle, IBM DB2

Ficheros vs. Bases de datos

(72)

72

(73)

73

Ficheros secuenciales

Application

Cola aplicaciones para acceso a los datos

Application

Appl i c ati o n

Archivo Application

Acceso serializado

199712150007 Widget 100 4 400

199712150007 Thingamabob 275 1 275

199712150008 Widget 100 3 300

(74)

74

Problemas de las organizaciones de ficheros

• Redundancia e inconsistencia de datos

• Costes de mantenimiento de los programas:

Dificultad en el acceso. Cada consulta de datos implica generalmente escribir un nuevo programa

Aislamiento de datos. Formatos diferentes y en medios diferentes

Integridad. Para implementar restricciones de integridad es necesario modificar todos los programas que accedan a los datos

(75)

75

Problemas de las organizaciones de ficheros

• Atomicidad.

Cuando hay un fallo informático (corte de corriente, error de disco, ...) se puede producir una inconsistencia en una transferencia bancaria. La transferencia debe ser una operación atómica (ocurre totalmente o no ocurre).

(76)

76

Problemas de las organizaciones de ficheros

• Acceso concurrente.

Application

Application

Trabajo con una copia de

los datos

Trabajo con una copia de los datos

Yo también!

Archivo

199712150007 Widget 100 4 400 199712150007 Thingamabob 275 1 275 199712150008 Widget 100 3 300

Archivo

199712150007 Widget 100 4 400

199712150007 Thingamabob 275 1 275

199712150008 Widget 100 3 300

Archivo

199712150007 Widget 100 4 400

199712150007 Thingamabob 275 1 275

199712150008 Widget 100 3 300

Application

(77)

77

Problemas de las organizaciones de ficheros

• Las bases de datos solucionan los problemas de los ficheros.

• Sin embargo, no sustituyen a los ficheros en todas las aplicaciones.

Por ejemplo: ficheros temporales, datos no relacionados.

Además, las bases de datos se implementan con ficheros.

(78)

78

Problemas de las organizaciones de ficheros

• Los ficheros se prefieren a los SGBD cuando:

BD y aplicaciones simples, bien definidas y sin visos de cambio.

Requisitos de tiempo real que no pueden cubrir los SGBD.

No se requiere acceso concurrente.

(79)

79

Sistemas gestores de bases de datos (SGBDs)

Usuario 1 Usuario n Aplicación 1 Aplicación m

SGBD

BD 1 BD k

... ...

...

(80)

80

Tipos de SGBDs

• Relacionales.

• Orientados a objetos.

• Geográficos.

• Temporales.

• XML.

(81)

81

Los SGBDs proporcionan:

C oncurrencia

I ntegridad

S eguridad

(82)

82

Concurrencia a nivel de fila

Last Name

First

Name Address Phone

Adams Bobby 1426 Main 555-1423

Adams Sandy 214 Cisco Lane 555-4297 Brown Terry 45 River Walk 555-8495 Caldwell Simone 122 42ND ST 555-5367 Fridrich John 956 Billings 555-4311 Gaines Lois 6094 Beaker 555-0945 Jones Larry 567 Yale Ave. 555-6932 Jones Larry 240 Boston Blvd. 555-5390 Jones LaVerne South Star Route 555-2345 Mitchell Jean 504 1ST Ave. 555-1777 Mitchell Ted 504 1ST Ave. 555-1778 Smith Diana 2253 Dahlia 555-6098 Smith Grace 983 Fairfax 555-8764 Wise Sara 9023 Colorado Blvd. 555-3242

Application

¡Estoy leyendo la 3ª

fila!

Application

Application

¡Estoy cambiando

la 6ª fila!

¡Estoy leyendo la 8ª fila y luego la

modificaré!

(83)

83

Integridad

• Restricciones de integridad:

Dominio.

Clave primaria.

Clave externa.

Definidas por el usuario.

(84)

84

Seguridad

• Un SGBD es un sistema software capaz de manejar grandes colecciones de datos:

Relacionados.

Compartidos.

Persistentes.

• Aseguran su fiabilidad y privacidad.

Usuarios.

Roles.

Restricciones de acceso.

(85)

85

Ventajas

• Como consecuencia de estas características se obtienen las siguientes ventajas:

Normalización.

Tiempo de desarrollo de aplicaciones reducido.

Flexibilidad.

Facilidad para añadir o eliminar datos necesarios.

Disponibilidad inmediata de las actualizaciones de datos para todos los usuarios.

(86)

86

SGBDs

SQL/DS de IBM, 1981

ORACLE de RSI, 1981

DB2 de IBM, 1983

Informix, 1985

Sybase, 1991

MS SQL Server (1989, 1992)

MS Access (1992)

MySQL (1995)

PostgreSQL (1995)

HyperSQL (2001) IBM: Industrial Business Machines RSI: Relational Software, Inc.

MS: Microsoft

Gestores de ficheros

("databases")

DBase

Paradox

(87)

87

Tipos de datos SGBDRs

• Texto

• Memo

• Numérico

• Autonumérico

• Fecha/Hora

• Moneda

• Sí/No

• Objeto OLE

• Hipervínculo

(88)

88

Visión de los datos

• Objetivo de un SGBD:

Proporcionar una visión abstracta de los datos

Se ocultan los detalles de cómo se almacenan y mantienen los datos.

• Niveles:

Físico

Cómo se almacenan los datos.

Lógico

Qué datos y qué relaciones se almacenan.

Vistas

Subconjunto del nivel lógico.

(89)

89

Vistas

CREATE VIEW BLUEDEP AS SELECT *

FROM EMPL

WHERE DEP LIKE 'BLU%;

JOB SAL S 31000 S 30000 C 27000 S 29000 JOB SAL DEP

S 31000 BLU M 32000 RED S 30000 BLU C 27000 GRE S 33000 GRE M 31000 BLU S 32000 RED C 28000 GRE S 30000 RED M 33000 GRE S 31000 RED S 35000 GRE C 27000 BLU S 29000 RED S 29000 BLU

S 31000 BLU S 30000 BLU M 31000 BLU C 27000 BLU S 29000 BLU Columns and rows defined by BLUEDEP

SELECT JOB, SAL FROM BLUEDEP WHERE JOB <> 'M';

(90)

90

Modelo relacional

• Los modelos de datos se usan para poder definir una interpretación de los datos conforme a su estructura, relaciones y operaciones que se les pueden aplicar.

• Def: Colección de conceptos que se usan para describir la estructura de una BD.

• La estructura son los tipos de datos, las relaciones y las restricciones.

• Llevan asociados operaciones básicas.

(91)

91

Modelo relacional

Se usa una colección de tablas para representar los datos y sus relaciones.

PROPIET1.TABLA_A

COL1 COL2 COL3

ABC 7 1987-11-14 DEF 4 1963-01-01 GHI 6 1946-07-12 JKL 7 1951-12-30 MNO 0 1992-08-12 PROPIET2.TABLA_B Una "BBDD

relacional"

es una "BBDD de Tablas"

"RELACION" = TABLA

COL1 COL2 COL3

ABC 7 1987-11-14 DEF 4 1963-01-01 GHI 6 1946-07-12 JKL 7 1951-12-30 MNO 0 1992-08-12

RDBMS = Sistema de Gestión de Bases de Datos Relacionales

(92)

92

Diseño de bases de datos

• Proceso de creación de un esquema de la base de datos.

• Fases:

Conceptual.

Lógico.

Físico.

(93)

93

Conceptual: Modelo entidad-relación

Dept Locations

M

Skills

Employees Projects

1

M M

M

M M

1 1

1

1

1

1

1

1 1

A LOCATION HAS MANY

DEPTS

MANY EMPLOYEES

WORK ON MANY PROJECTS

(94)

94

Lenguajes de consulta

• QBE (Query By Example)

Gráfico.

• SQL (Structured Query Language)

Textual.

(95)

95

Lenguaje SQL

Es el lenguaje de facto para el acceso a los datos en las bases de datos relacionales.

Se divide en tres partes:

Lenguaje de definición de datos (DDL)

Lenguaje de manipulación de datos (DML)

Lenguaje de control de datos (DCL)

(96)

Preguntas

Referencias

Documento similar

o esperar la resolución expresa&#34; (artículo 94 de la Ley de procedimiento administrativo). Luego si opta por esperar la resolución expresa, todo queda supeditado a que se

1. LAS GARANTÍAS CONSTITUCIONALES.—2. C) La reforma constitucional de 1994. D) Las tres etapas del amparo argentino. F) Las vías previas al amparo. H) La acción es judicial en

En cuarto lugar, se establecen unos medios para la actuación de re- fuerzo de la Cohesión (conducción y coordinación de las políticas eco- nómicas nacionales, políticas y acciones

D) El equipamiento constitucional para la recepción de las Comisiones Reguladoras: a) La estructura de la administración nacional, b) La su- prema autoridad administrativa

Volviendo a la jurisprudencia del Tribunal de Justicia, conviene recor- dar que, con el tiempo, este órgano se vio en la necesidad de determinar si los actos de los Estados

Investigación da morte violenta Causa, mecanismo e circunstancias da morte Lesións contusas.. Lesións por arma branca Lesións por arma de fogo Asfixias mecánicas

[r]

La heterogeneidad clínica de esta patolo- gía hizo que se considerasen a numerosos genes de pro- teínas de la matriz extracelular (elastina, fibronectina, genes de los colágenos de