Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - MonkeyBoy

#21
Java / Re:[CURSO] Programación orientada a objetos
Agosto 23, 2018, 04:55:09 PM
Herencia

Los objetivos de este nuevo capitulo será:

  • Definir la herencia y sus funciones.
  • Diferenciar herencia de composición.


¿Qué es la herencia?

Seguramente, al haber leído la palabra herencia, te habrá venido a la mente lo que sucede con una persona que puede heredar algunos rasgos físicos o personales de sus padres o abuelos. La herencia es la característica por la cual los padres transmiten algunas características a sus hijos. Del mismo modo que en biología, en el plano económico, una persona le puede heredar sus bienes a otra persona, es decir que se los puede traspasar a otra persona por medio de una relación de jerarquía.



Pasando a nuestra materia, te presentamos un ejemplo de lo que sería la herencia, partiendo de la clase Persona que definimos en capitulos anteriores.
Recordemos cómo está definida la clase Persona.

Código: php
CLASE PERSONA
CLASE Persona

Atributos
   Nombre : cadena
   Edad : entero

Métodos
   Persona ( )
   setNombre (valor :  cadena)
   getNombre ( ) : cadena
   getEdad ( ) : entero



Ahora bien, proponemos que pienses qué agregados deberías hacer si queremos, además, que nuestro programa registre la información de un alumno.


Seguramente habrás pensado que un alumno tiene un nombre, una edad y algún dato propio por ser alumno, por ejemplo, la matrícula. Esto se debe a que un alumno, ante todo, es una persona y luego tiene datos y comportamientos propios que le corresponde por ser un alumno. De esta manera, podemos decir que un alumno debe tener todos los atributos de una persona (ya que es una persona) y, además, agregar atributos propios.


¿Cómo resolvemos esto sin tener que repetir todo lo de una persona en un alumno?


Es en este momento donde deberás hacer uso de la herencia. Es así como nuestra nueva clase quedaría con el siguiente modelo.

Código: php
CLASE ALUMNO
CLASE Alumno

Atributos
   Matrícula : cadena

Métodos
   Alumno ( )
   setMatrícula (valor :  cadena)
   getMatrícula ( ) : cadena


Como habrás notado, utilizamos la herencia para transmitir los datos y atributos de una clase a otra. De esta manera podemos decir que :

La herencia es una propiedad esencial de la Programación Orientada a Objetos que consiste en la creación de nuevas clases a partir de otras ya existentes.


Subclases y superclases


En nuestro ejemplo, la clase Persona es una Superclase de la clase Alumno. Y del mismo modo, la clase Alumno es una subclase de la clase Persona.
Un lenguaje orientado a objetos permite heredar a las clases características y conductas, es decir los atributos y métodos, de una o varias clases denominadas superclases, clases bases o padres. A las clases que heredan de otras clases se las denominan subclases, clases derivadas o hijas. Las clases derivadas, a su vez, pueden ser clases bases para otras clases derivadas. De esta manera podrás establecer una clasificación jerárquica similar a la existente en Biología con los animales y plantas.


La herencia te permitirá lograr una de las principales características de la programación, que es la reutilización de código. 

   
Una vez que una clase ha sido probada, el código fuente de dicha clase no necesita modificarse. Su funcionalidad se puede cambiar derivando una nueva clase que herede la funcionalidad de la clase base y le añada otros comportamientos. De esta manera podrás reutilizar el código existente, ahorrando tiempo y dinero, ya que solamente tendrás que verificar la nueva conducta que proporciona la clase derivada.



Sintetizando...
La herencia es un mecanismo mediante el cual una clase hereda todo el comportamiento y atributos de otra clase. La clase que hereda se denomina clase hija, clase derivada o subclase. La clase que provee la herencia se llama clase padre, base, o superclase.

La herencia está dada por la relación "es un".


Un ejemplo de herencia:


Veamos cómo implementamos nuestro ejemplo de herencia en pseudocódigo.


Código: php
SEUDOCÓDIGO
CLASE Persona
Atributos
NOMBRE : CADENA
        EDAD : ENTERO
Métodos
        Persona ()
        EsMayor():BOOLEAN
        GetNombre():CADENA
Implementación
PROCEDIMIENTO Obtener ()
        INICIO
              Mostrar ("Ingrese nombre")
              Ingresar (NOMBRE)
              Repetir
                    Mostrar ("Ingrese edad")
                    Ingresar (EDAD)
              Hasta que EDAD > 0
         FIN
FUNCIÓN EsMayor (): Boolean
         VARIABLES
               ES : BOOLEAN
INICIO
               ES <- FALSO
               Si EDAD > 18 entonces
                  ES <- VERDADERO
               Finsi
               Devolver ES
FINFUNCIÓN
FUNCIÓN GetNombre (): Boolean
INICIO
              Devolver NOMBRE
FINFUNCIÓN
FINCLASE

Código: php
CLASE Alumno extiende de Persona 
Atributos
     MATRICULA : CADENA
Métodos
     Obtener ()
     GetMatricula():CADENA
     SetMatricula(MAT:CADENA)
Implementación
     PROCEDIMIENTO Obtener ()
     INICIO
          Super.Obtener()
          Mostrar ("Ingrese matrícula")
          Ingresar (MATRICULA)
     FIN
     FUNCIÓN GetMatricula (): CADENA
     INICIO
         Devolver MATRICULA
     FINFUNCIÓN
     PROCEDIMIENTO SetMatricula (MAT: CADENA)
     INICIO
          MATRICULA <- MAT
     FIN
FINCLASE
INICIO
     Alu = nuevo Alumno()
     Alu.obtener()
     Si Alu.EsMayor() entonces
         Mostrar (Alu.GetNombre(), " es mayor de edad")
     Finsi
FIN


En la definición de la clase Alumno, se encuentra la palabra reservada extiende para especificar que es una clase que hereda de la clase Persona.

Clase Alumno extiende de Persona.

Si observas el algoritmo principal verás que ahora se crea un objeto de la clase Alumno. Lo primero que se hace es invocar al método Obtener.
¿Qué ocurre entonces? Se ejecuta el método Obtener de la clase Alumno, que realiza la siguiente acción: Super.Obtener(). En esta llamada se encuentra la palabra super que se utiliza para invocar a los métodos de la clase base.

Este mensaje invoca al método Obtener de la clase Base (en nuestro ejemplo, la clase Persona). Luego se ingresan los datos propios del alumno, en este caso, la matrícula.

Esto es la característica fundamental de la herencia, que logra la reutilización de código y la abstracción, ya que los detalles de implementación de la obtención de los datos de la persona quedan en la clase Persona.
La clase Alumno implementa los detalles propios de un alumno, de esta forma se logra la abstracción en cada una de las clases.


Hasta el proximo capitulo!
#22
Java / Re:[CURSO] Programación orientada a objetos
Agosto 23, 2018, 11:59:32 AM
Características de la POO


Capitulo 2


Dentro de las características más importantes podemos destacar a las siguientes:


Abstracción
Cada objeto en el sistema puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin revelar cómo se implementan estas características. El objeto tendrá una parte pública que es la que permitirá la comunicación con el resto de los objetos, dejando de manera privada los detalles de implementación de la parte pública.

Encapsulamiento
También llamado "ocultación de la información". Cada objeto está aislado del exterior, es un módulo natural, y cada tipo de objeto expone una interfaz (parte pública) a otros objetos que especifica cómo pueden interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas, solamente los propios métodos internos del objeto pueden acceder a su estado. Esto asegura que otros objetos no pueden cambiar el estado interno de un objeto de manera inesperada, eliminando efectos secundarios e interacciones no previstas.

Polimorfismo
Comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre; al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando.

Herencia
Las clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes, tal como sucede con los objetos de la vida real.




Diseño de clases

Una clase es un modelo, un esqueleto para generar objetos. La clase está compuesta por atributos (datos, variables), también llamadas variables de instancia, que nos indican en qué estado se encuentra cada objeto,  y métodos (funciones) que indican cuál es el comportamiento que posee el objeto.

Las clases habitualmente se denotan con nombres generales como Animal, Factura.

Toda clase está compuesta por atributos y métodos. Los atributos son características de los objetos. Cuando definas un atributo tendrás que especificar su nombre y su tipo. En definitiva, la definición de un atributo no es más que la declaración de una variable.



Habitualmente, a los atributos se los denomina variables miembro de la clase, que por lo general son privadas al objeto (siguiendo las directrices de diseño del Principio de ocultamiento de la información) y su acceso se realiza mediante los métodos que se definan para manejar esos atributos.

También dentro de las clases tendrás que definir e implementar la funcionalidad asociada al objeto. Los métodos son el equivalente a las funciones en los lenguajes estructurados. Se diferencian de ellos en que es posible acceder a las variables de la clase de forma implícita. Por eso cuando se desea realizar una acción sobre un objeto, se dice que se le manda un mensaje invocando a un método que realizará la acción.

Veamos un ejemplo de una clase y su ejecución y a partir del ejemplo iremos mostrando sus componentes...

Ejemplo de diseño de una clase


Comenzamos con un ejemplo muy simple, en el que definimos una clase denominada PERSONA.
Dentro de sus componentes podemos identificar 2 atributos y 5 métodos.
   
Código: php
CLASE PERSONA
CLASE Persona
Atributos
   Nombre : cadena
   Edad : entero

Métodos
   Persona ( )
   setNombre (valor :  cadena)
   getNombre ( ) : cadena
   getEdad ( ) : entero


Atributos y Métodos


Atributos
Con los atributos estamos definiendo que los datos de una PERSONA serán su nombre y su domicilio.

Los atributos nombre y domicilio se denominan atributos de clase. Cada vez que se genere un objeto de la clase PERSONA tendrá una copia de estos atributos. Por eso, también se los denomina atributos de instancia.


En nuestro ejemplo de la Clase Persona, los atributos son Nombre y Edad.


Métodos

Con los métodos estamos definiendo el comportamiento que tendrá una PERSONA.


En nuestro ejemplo, los métodos son 5: Persona, setNombre, setEdad, getNombre y getEdad.
Cuando se crea un objeto se genera una copia de los métodos en cada objeto creado. A esto se lo denomina método de instancia.

Es importante que sepas que junto con el nombre del método, la declaración lleva información del tipo de retorno del método, el número y el tipo de los parámetros necesarios, y qué otras clases y objetos pueden llamar al método.

Los métodos pueden poseer argumentos (parámetros) o no. En caso de no tenerlos solo se escriben los paréntesis vacíos, en caso de tenerlos se define el conjunto de argumentos de cualquier método en una lista de declaraciones de variables delimitadas por comas donde cada declaración de variable es un par nombre / tipo.


Que es el metodo constructor?

Si observás la lista de métodos verás que hay uno que tiene el mismo nombre de la clase.  En nuestro ejemplo, es el método Persona. Este es un método especial que se denomina constructor. El constructor es el método invocado en el momento en que se crean las instancias de las clases, es decir, los objetos. Los constructores no deben retornan un valor, pero sí pueden tener o no argumentos.

Que son los metodos Stters y Getters?


Seguramente habrás notado que los métodos de la clase comienzan con la palabra set o get. A estos se los denomina getters y setters. Por lo general suele haber uno para atributo definido.


Los setters comienzan con la palabra set, es un método que no retorna nada, y que posee como argumento un dato cuyo tipo de dato es el mismo del atributo que se trata. En nuestro ejemplo tenemos setNombre cuyo argumento es una cadena debido a que el atributo Nombre es de tipo cadena. El método setter lo que hará es asignar el valor del parámetro al atributo correspondiente.

En cambio, los getters, no poseen argumento alguno, pero devuelven un dato. En nuestro ejemplo tenemos getEdad que no tiene argumentos pero devuelve un entero debido a que el atributo Edad es de tipo entero. El método getter lo que hará es devolver el valor del atributo correspondiente.

I - Alcance de atributos y métodos

El alcance es una característica fundamental de la POO ya que te permitirá definir el encapsulamiento de la información y del comportamiento. Los métodos, atributos y clases deben tener un solo alcance, también lo llamamos tipo de acceso.

Cuando diseñes clases, es importante que pienses en términos de quién debe tener acceso a qué.
Qué cosas son parte de la implementación privada y deberían ocultarse (y en qué grado) y qué cosas forman parte de la interface y deberían ser públicas.


Podrás definir alguno de los siguientes cuatro tipos de acceso:

ALCANCE
Privado

Si un atributo o método tiene alcance de tipo privado, este solo podrá ser accedido por los métodos miembros definidos en la misma clase. Es importante que sepas que las clases no pueden declararse como privadas.

Público

Si un atributo o método tiene un acceso de tipo público es accedido desde cualquier clase, no tiene restricciones de ningún tipo (no respeta la ocultación de la información). Las clases solo pueden tomar dos tipos de modificadores público o de paquete. Las clases no pueden declararse ni protected, ni private.

Protegido
Este alcance es muy importante cuando se utilizan relaciones de herencia entre las clases, y significa que los atributos y métodos serán accesibles desde las clases heredades. El concepto de herencia lo veremos en la siguiente unidad, así que volveremos a mencionar este acceso cuando te expliquemos qué es la herencia.


Paquete

Las clases tienen un comportamiento definido para quienes las usan, conformado por los elementos que tienen un acceso público, y una implementación oculta formada por los elementos privados, de la que no tienen que preocuparse los usuarios

II - Alcance de atributos y métodos


Las clases tienen un comportamiento definido para quienes las usan, conformado por los elementos que tienen un acceso público, y una implementación oculta formada por los elementos privados, de la que no tienen que preocuparse los usuarios de la clase. 
Con respecto a los métodos, por lo general, aquellos que definas dentro de la clase tendrán un especificador de acceso público, que muestra la interface que provee la clase. En el caso de querer definir un método y que este no forme parte de la interface, lo que tendrás que hacer es declararlo como privado. Este método privado puede ser invocado dentro de cualquier otro método de la misma clase.

Ahora que ya te contamos el tipo de alcance que podrás aplicar a cada atributo o método, es momento de modificar la clase PERSONA para agregar el acceso.

La clase modificada quedará de la siguiente manera:

Código: php
CLASE PERSONA
CLASE Persona
Atributos
   [privado] Nombre : cadena
   [privado] Edad : entero

Métodos
   [público] Persona ( )
   [público] setNombre (valor :  cadena)
   [público] setEntero (valor : cadena)
   [público] getNombre ( ) : cadena
   [público] getEntero ( ) : entero



Atributos de clase

Hasta el momento, cuando hemos definido atributos dentro de la clase, hemos dicho que se denominan atributos de instancia, porque cuando se crea un objeto en memoria ese objeto tendrá una copia tanto de los atributos como también de sus métodos.

Existe un modificador que aplicado a las variables hace que el atributo de instancia se convierta en atributo de clase. La diferencia que existe con el anterior es que al momento de crear un objeto ese atributo de clase no se crea en el objeto, por lo que si se llegaran a crear más objetos ninguno de ellos tendría una copia del original sino que todos compartirían el mismo atributo. Esto implica que si un objeto modifica el valor de ese atributo, se verá reflejado el cambio en todos los objetos.

Para poder definir un atributo de clase tendrás que utilizar la palabra estático, anteponiéndola al nombre del atributo.



Métodos de clase

Si aplicás la palabra estático a los métodos, se los denomina método de clase. Los métodos de clase permiten acceder a código cuando no se tiene una instancia en particular de un objeto.

Al definir un método de clase, tenés que tener en cuenta que no pueden acceder a atributos que no están definidos como estáticos.


Proximamente capitulo 3.

Saludos!
#23
Java / [CURSO] Programación orientada a objetos
Agosto 12, 2018, 09:42:36 PM
Introducción al paradigma de objetos


*Aquí les voy a ir compartiendo conocimientos que fui adquiriendo mediante estudios y tambien gracias a este gran foro. De esta manera,con aproximadamente 10 capitulos por unidad iré compartiendo sobre POO con Java y desarrollo de software entre otras cosas.

Capitulo 1


Objetivos:


  • Comprender qué es un paradigma de programación.
    Describir las características básicas del paradigma de programación orientada a objetos.
    Conocer las características básicas de una clase y sus componentes.



¿Qué es un paradigma de programación?

En el módulo Técnicas de Programación te presentamos a la programación estructurada, en donde se definen funciones y procedimientos. En este módulo nos dedicaremos al estudio de la Programación Orientada a Objetos (POO).

Definición de Paradigma de programación

Podemos definir a un paradigma de programación como un enfoque particular o criterio para la creación de software.

Hay diferentes paradigmas de programación, que determinan distintos estilos de programación y diferentes formas de resolver un problema.

Para mostrar más claro los diferentes enfoques de los paradigmas, te presentamos un mismo ejemplo abordado desde ambos paradigmas.

Supongamos que tenemos que guardar el nombre y la edad de un alumno. Ingresamos todos los datos por teclado y luego mostramos el nombre si la persona es mayor de edad.

PARADIGMA ESTRUCTURADO


Código: php
[i]SEUDOCÓDIGO[/i]
TIPOS
T_REG_PERSONA = REGISTRO
        NOMBRE : CADENA
        EDAD : ENTERO
FINREGISTRO

VARIABLES
       ALUMNO : T_REG_PERSONA

INICIO
    ObtenerPersona (ALUMNO)
    Si EsMayor (ALUMNO) entonces
          Mostrar (GetNombre(ALUMNO), " es mayor de edad")
    Finsi
FIN

PROCEDIMIENTO ObtenerPersona (ref P : T_REG_PERSONA)

INICIO
    Mostrar ("Ingrese nombre")
    Ingresar (P.NOMBRE)
    Repetir
         Mostrar ("Ingrese edad")
         Ingresar (P.EDAD)
    Hasta que P.EDAD > 0
FINPROCEDIMIENTO

FUNCIÓN EsMayor (ref P : T_REG_PERSONA) : Boolean

VARIABLES
    ES : BOOLEAN

INICIO
    ES <- FALSO
    Si P.EDAD > 18 entonces
        ES <- VERDADERO
    Finsi
    Devolver ES
FINFUNCIÓN

FUNCIÓN GetNombre (ref P : T_REG_PERSONA) : Boolean

INICIO
     Devolver P.NOMBRE
FINFUNCIÓN


[u][b]PARADIGMA ORIENTADO A OBJETOS[/b][/u]

[i]SEUDOCÓDIGO[/i]
CLASE Persona

  Atributos
      NOMBRE : CADENA
      EDAD : ENTERO

  Métodos
      Obtener ()
      EsMayor():BOOLEAN
      GetNombre():CADENA

  Implementación
      PROCEDIMIENTO Obtener ()
      INICIO
          Mostrar ("Ingrese nombre")
          Ingresar (NOMBRE)
          Repetir
              Mostrar ("Ingrese edad")
              Ingresar (EDAD)
          Hasta que EDAD > 0
      FIN

      FUNCIÓN EsMayor (): Boolean
      VARIABLES
          ES : BOOLEAN
      INICIO
          ES <- FALSO
          Si EDAD > 18 entonces
             ES <- VERDADERO
          Finsi
          Devolver ES
      FINFUNCIÓN

     FUNCIÓN GetNombre (): Boolean
     INICIO
          Devolver NOMBRE
     FINFUNCIÓN
FINCLASE

INICIO

    Alumno = nuevo Persona()
    Alumno.obtener()
    Si Alumno.EsMayor() entonces
       Mostrar (Alumno.GetNombre(), " es mayor de edad")
    Finsi
FIN


Analicemos a continuación cada uno de los paradigmas.....

En la versión estructurada, se realiza la definición de los datos, por medio de un registro y sus campos. Luego, se definen funciones y procedimientos que reciben al registro como parámetro para poder realizar su tarea. Es decir, que se definen los datos y su comportamiento de manera separada. Es por eso que hay que enviar los datos por parámetro. Si alguna definición de datos cambia, deberemos cambiar las rutinas definidas en el programa.

En cambio, en la versión de Objetos, habrás notado que hay algo nuevo. Hay una clase que contiene atributos y métodos. Es decir que, en este mismo componente, en la clase, vamos a tener los datos y la forma en que se manipulan esos datos. Luego, en el programa principal, se crea un objeto en base a una clase. También habrás notado que no hay llamadas a rutinas, sino que hay invocaciones a los métodos definidos en la clase Persona utilizando el objeto ALUMNO. Es decir que creamos un Objeto a partir de una clase y luego usamos el objeto para llamar a los métodos. En el mismo objeto se encuentran los datos y sus comportamientos, de tal manera que, ante un cambio en los datos, no se deberá cambiar nada del programa principal, sino que los cambios deberán realizarse solamente en la clase.

A partir de estas deferencias, entonces veamos qué es el paradigma de la Programación Orientada a Objetos y luego las diferencias que hay con la programación estructurada.



La Programación Orientada a Objetos (POO u OOP según sus siglas en inglés) define los programas por medio de "clases de objetos". Los objetos, por lo tanto, son el elemento fundamental del programa, ya que son entidades que combinan:

Estado: Los datos de los programas.
Comportamiento: Las acciones que pueden hacer los objetos.
Identidad: Un objeto que lo diferencia de los demás objetos del programa.

Así, la programación orientada a objetos define un programa como un conjunto de estos objetos, que colaboran entre ellos para realizar tareas. Como consecuencia, los programas y módulos te serán más fáciles de escribir, mantener y reutilizar.

Veamos a continuación la definición de Objeto y de Clase.....


Objetos
Antes de ver la definición de objeto, te pedimos que te tomes un momento para observar los objetos que hay a tu alrededor, por ejemplo, una mesa, una silla, tu perro, cualquier elemento.

Podrás notar que a cada objeto se le puede asociar un conjunto de características, por ejemplo: color, peso, dimensiones, raza, etc. También, cada objeto tendrá un comportamiento: el perro ladra, camina, salta, etc. Así, cada objeto tendrá sus propias características y comportamiento.

Esta misma idea es la de Objetos en la POO.



Un Objeto es un elemento que posee características, denominadas atributos, y comportamientos, denominados métodos, que puede interactuar con otros objetos del sistema, enviando mensajes, y tiene asociado una identidad que lo distingue entre todos los objetos del sistema.


Clases
Volvamos a los casos de los objetos de la vida real y tomemos el ejemplo de un perro.

Nosotros sabemos qué es un perro porque conocemos la idea de un perro. Todos los perros presentan las características y tienen el mismo comportamiento. Ahora bien, cada perro en particular se diferencia porque tiene diferentes atributos, por ejemplo, son de distinta raza, de distinto tamaño, de distinto peso, etc. Por lo tanto, la idea de un perro es el equivalente a una Clase.

Podemos ver a una clase como un modelo o plantilla que representa entidades o conceptos.


En una clase se definen los datos y el comportamiento que tendrá la entidad que representa. Los datos se denominan atributos, mientras que el comportamiento está definido por funciones y procedimientos que se denominan métodos. Una clase se utiliza para crear objetos, es por eso que también se dice que un objeto es una instancia de una clase.

Una clase es un modelo abstracto que define cómo será un objeto real.

Origenes de la POO


La programación orientada a objetos tomó posición como el estilo de programación dominante a mediados de los años ochenta, en gran parte debido a la influencia de C++ , una extensión del lenguaje de programación C. Su dominación fue consolidada gracias al auge de las Interfaces gráficas de usuario, para los cuales la programación orientada a objetos está particularmente bien adaptada. En este caso, se habla también de programación dirigida por eventos, también conocida como programación visual.

Las características de orientación a objetos fueron agregadas a muchos lenguajes existentes durante ese tiempo, incluyendo Ada, BASIC, Lisp, Pascal, y otros.
El agregado de estas características a los lenguajes que no fueron diseñados inicialmente para ellas condujo a menudo a problemas de compatibilidad y a la capacidad de mantenimiento del código. Los lenguajes orientados a objetos "puros", por otra parte, carecían de las características que los programadores estaban acostumbrados a utilizar, por ejemplo definiciones de variables globales y un uso excesivo de funciones y procedimientos poco reutilizables.

Para saltar este obstáculo, se hicieron muchas tentativas para crear nuevos lenguajes basados en métodos orientados a objetos, pero permitiendo algunas características imperativas de maneras "seguras".

El Eiffel de Bertrand Meyer fue un temprano y moderadamente acertado lenguaje con esos objetivos, pero luego fue reemplazado por Java, en gran parte debido a la aparición de Internet y a la implementación de la máquina virtual de Java en la mayoría de los navegadores.

¿Cuáles son las diferencias de la POO con el paradigma estructurado?


La principal diferencia con la programación estructurada tradicional es que ahora deberás pensar simultáneamente en el conjunto de atributos que tendrá una clase y en los métodos para poder tratarlos. Es decir, que los datos son tan importantes como su comportamiento y deben ir íntimamente entrelazados.
En cambio, en el paradigma estructurado, los datos y los procedimientos están separados y sin relación, ya que lo único que se busca es el procesamiento de unos datos de entrada para obtener otros de salida.

Cuando programás de forma estructurada, lo que hacés es pensar sobre todo en términos de procedimientos o funciones, y en segundo lugar en las estructuras de datos que esas rutinas manejan. En la programación estructurada se escriben funciones y después se les pasan datos. Ahora, cuando programes con objetos, definirás los objetos con sus datos y sus métodos relacionados.

Conceptos básicos de la POO


Como habrás notado, la POO es una nueva forma de programar que trata de encontrar soluciones  a los problemas de la programación clásica estructurada.

Es por eso que la POO introduce nuevos conceptos, que superan y amplían conceptos antiguos ya conocidos. Entre ellos se destacan los siguientes: 

OBJETO
Es una entidad provista de un conjunto de atributos (datos) y de comportamiento (métodos). Los objetos se corresponden a los objetos reales del mundo que nos rodea, o a objetos internos del sistema (del programa).

CLASE
Es el modelo en el que se definen las propiedades y comportamiento de un tipo de objeto.

METODO
Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se desencadena tras la recepción de un "mensaje". Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un método puede producir un cambio en las propiedades del objeto, o la generación de un "evento" con un nuevo mensaje para otro objeto del sistema.

EVENTO
Es un suceso en el sistema (tal como una interacción del usuario con la máquina, o un mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. También se puede definir como evento a la reacción que puede desencadenar un objeto, es decir, la acción que genera.

MENSAJE
Una comunicación dirigida a un objeto que le ordena que ejecute uno de sus métodos con ciertos parámetros asociados al evento que lo generó.

PROPIEDAD O ATRIBUTO

Contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace los datos visibles desde fuera del objeto, y cuyo valor puede ser alterado por la ejecución de algún método.

ESTADO INTERNO

Es una propiedad invisible de los objetos, que puede ser únicamente accedida y alterada por un método del objeto, y que se utiliza para indicar distintas situaciones posibles para el objeto (o clase de objetos).

COMPONENTE DE UN OBJETO

Atributos, identidad, relaciones y métodos.

REPRESENTACIÓN DE OBJETOS

Un objeto se representa por medio de una tabla o entidad que esté compuesta por sus atributos y funciones correspondientes.




Eso es todo por hoy, próximamente el capitulo 2.

MonkeyBoy














#24
Hola a tod@s.

Conocen y/o me recomiendan algun software para administración de activos?

Me refiero a poder mantener actualizada una base de datos de las computadoras que hay en la empresa donde trabajo.
Actualmente mantengo los datos (OS,N°serie,Tipo de Office,Antivirus,VM,etc) en un excel pero es necesario optimizar ese proceso y poder,por asi decirlo,encontrar las computadoras por estar en la misma red, y a partir de ahi,con un agente o algun archivo que se les envie,poder mantener actualizado ese listado.

Un ejemplo de soft para que puedan darme otras opciones, puede ser OCS INVENTORY (Pero no quieren utilizar este ¬¬)

Muchas gracias!
#25
Tengo una consulta tecnica. porque Hay algo que estoy haciendo mal o me falta configurar para poder lograr el paso a paso del tutorial que da ANTRAX en el foro.

Taller de Seguridad Web #1 - Underc0de - Hacking y seguridad informática

Dice:
Una vez hecho y comprendido esto, los guardamos y colocamos a ambos ficheros dentro de un directorio dentro de la carpeta htdocs o www (dependiendo de si se usa wamp o xampp), en mi caso se llamara XSS.

hasta esa parte todo bien,pero cuando quiero ingresar desde el navegador al directorio,no me aparece el buscador que previamente habia guardado en la carpeta htdocs


Utilizo Sistema operativo: Windows 10

Me tira error al querer ir del navegador al directorio:

The requested URL /XSS was not found on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.




Hay algo que no configuré bien en XAMPP?  Dentro de la carpeta htdocs suelto ambos ficheros o creo una carpeta mas dentro y ahi los coloco?




Muchas gracias!
#26
Gran aporte!

Esta semana ya me pongo a probarlo.  :)
#27
Presentaciones y cumpleaños / Presentándome
Mayo 16, 2018, 09:10:03 AM
Hola a todos y todas!.

Hace un largo tiempo vengo como autodidacta de seguridad informática,actualmente por certificarme en Programación y desarrollo y a partir de Julio certificandome internacionalmente en Hacking Etico.

Felicitaciones por este foro, que me es de gran ayuda y muy claro para practicas y seguir aprendiendo!

Saludos!