La programación orientada a objetos (OOP) es un paradigma de programación que utiliza la idea de "objetos" para representar datos y métodos. Esto es particularmente útil cuando se trata de crear aplicaciones complejas, ya que permite a los desarrolladores organizar mejor su código y hacerlo más reutilizable. En esta sección, presentaremos el concepto de programación orientada a objetos en Dart, el lenguaje de programación utilizado por Flutter.
1. Clases y Objetos
En programación orientada a objetos, una clase es un modelo o plantilla a partir del cual se crean objetos. En Dart, defines una clase usando la palabra clave class
. Por ejemplo, es posible que tenga una clase llamada Persona
que tenga propiedades como name
y age
. Una vez que tengas una clase, puedes crear un objeto a partir de ella. Por ejemplo:
clase Persona { Nombre de cadena; entero; } vacío principal() { Persona persona = Persona(); persona.nombre = 'Juan'; persona.edad = 30; }
En este ejemplo, Persona
es la clase y persona
es el objeto. Tenga en cuenta que puede asignar valores a las propiedades de los objetos utilizando la notación de puntos.
2. Métodos
Los métodos son funciones que pertenecen a una clase. Suelen manipular las propiedades de la clase. Por ejemplo, es posible que tengas un método greet
en la clase Person
que imprima un saludo personalizado:
clase Persona { Nombre de cadena; entero; saludo vacío() { print('Hola, soy $nombre y tengo $edad años.'); } } vacío principal() { Persona persona = Persona(); persona.nombre = 'Juan'; persona.edad = 30; persona.saludar(); // prints: Hola, soy John y tengo 30 años. }
3. Constructores
Un constructor es un método especial que se llama cuando se crea un objeto a partir de una clase. En Dart, el constructor tiene el mismo nombre que la clase. Puede utilizar el constructor para inicializar las propiedades del objeto. Por ejemplo:
clase Persona { Nombre de cadena; entero; Persona (nombre de cadena, edad int) { this.nombre = nombre; this.age = edad; } saludo vacío() { print('Hola, soy $nombre y tengo $edad años.'); } } vacío principal() { Persona persona = Persona('Juan', 30); persona.saludar(); // prints: Hola, soy John y tengo 30 años. }
En este ejemplo, el constructor Person
acepta dos parámetros y los utiliza para inicializar las propiedades name
y age
.
4. Herencia
La herencia es una característica de la programación orientada a objetos que permite que una clase herede propiedades y métodos de otra clase. En Dart, utiliza la palabra clave extends
para crear una clase secundaria. Por ejemplo, podría tener una clase Empleado
que hereda de Persona
:
clase Persona { Nombre de cadena; entero; Persona (nombre de cadena, edad int) { this.nombre = nombre; this.age = edad; } saludo vacío() { print('Hola, soy $nombre y tengo $edad años.'); } } clase Empleado extiende Persona { Compañía de cuerdas; Empleado(nombre de cadena, int edad, esta.empresa): super(nombre, edad); } vacío principal() { Empleado empleado = Empleado('John', 30, 'Google'); empleado.saludar(); // prints: Hola, soy John y tengo 30 años. print(empleado.empresa); // imprime: Google }
En este ejemplo, Employee
es una clase secundaria de Person
y hereda sus propiedades y métodos. Tenga en cuenta el uso de super
en el constructor Employee
para llamar al constructor Persona
.
5. Encapsulación
La encapsulación es el principio de ocultar los detalles de implementación y permitir el acceso solo a través de métodos. En Dart, puede utilizar la palabra clave _
(guión bajo) para hacer que una propiedad o método sea privado. Por ejemplo:
clase Persona { Cadena _nombre; int _edad; Persona(este._nombre, este._edad); saludo vacío() { print('Hola, soy $_name y tengo $_age años.'); } } vacío principal() { Persona persona = Persona('Juan', 30); persona.saludar(); // prints: Hola, soy John y tengo 30 años. }
En este ejemplo, las propiedades _name
y _age
son privadas, lo que significa que no se puede acceder a ellas fuera de la clase Person
.
Estos son los conceptos básicos de la programación orientada a objetos en Dart. Forman la base para crear aplicaciones Flutter más complejas y reutilizables.