Java. Introducción a la programación orientada a objetos


Campos de clase
La esencia de la programación orientada a objetos es representar el programa como una interacción de objetos.
 
Un objeto es algún tipo de entidad con ciertas propiedades y ciertas operaciones sobre él.

Los objetos se crearon originalmente para simular la realidad: muchas cosas que nos rodean se pueden representar como un objeto. Por ejemplo, un libro que leyó recientemente se puede considerar como un objeto con las propiedades 'nombre', 'autor', 'clasificación de edad', 'texto del libro', 'número de páginas', etc. puede realizar operaciones como "leer un libro", "quemar un libro", etc.
En la terminología del lenguaje de programación Java, estas "propiedades" se denominan campos y las operaciones sobre objetos se denominan métodos.
Dado que Java es un lenguaje de tipo estático, cualquier objeto debe crearse de acuerdo con algún patrón. En Java, estas plantillas son clases. Clasedescribe qué campos puede tener un determinado tipo de objeto y qué operaciones se definen sobre él.
La diferencia entre clase y objeto es análoga a la diferencia entre "coche" y "Toyota Camry estacionado en el quinto edificio de la calle Cheburekovo".

Considere el procedimiento para crear su propia clase de objetos con campos en Java. Libro de clase { nombre de cadena; String autorNombre; int edadRequisito; Cadena de texto; int pageCount; } Este código crea la clase"Libro". objetosde clase «Libro» hay dos propiedades enteras (denominadas «ageRequirement» y «pageCount») y tres propiedades de tipo «String» (con los nombres "nombre", "nombre del autor" y "texto".
La sintaxis general para crear una clase con campos es la siguiente.
  clase <nombre de clase> { <primer tipo de propiedad> <nombre de la primera propiedad> <segundo tipo de propiedad> <segundo nombre de propiedad> &helli; <tipo de última propiedad> <último nombre de propiedad> }

Por supuesto, en Java, puede crear clases no solo de esta manera (también hay métodos, modificadores de acceso y mucho más), sino más adelante.

Métodos de clase
Las operaciones sobre objetos en Java se denominan métodos. Los métodos son como funciones matemáticas: pueden tomar argumentos y devolver un valor. Por otro lado, los métodos en Java también tienen acceso a todos los campos de un objeto.

Para crear un método en una clase, debe incluirlo en la clase. Por ejemplo, podemos definir un método print(age) que imprimirá información sobre nuestro libro y mostrará una advertencia si el usuario aún no tiene la edad suficiente para leer ese libro.

    clase Libro
    {
        Cadena nombre;
        Cadena autorNombre;
        int edadRequisito;
        Cadena de texto;
        int pageCount;
        // crear un método de impresión
        vacío imprimir(int edad)
        {
            Sistema.fuera.< span style="color:#7d9029">println("Nombre: " +nombre);
            Sistema.fuera.< span style="color:#7d9029">println("Autor: " +nombre del autor);
            Sistema.fuera.< span style="color:#7d9029">println("Número de páginas: "+Entero.toString(ageRequirement);
            // el código de verificación va aquí
        }
    }
 
Analicemos la sintaxis para crear un método.
1) La primera línea de un método es su firma.
2) El tipo de retorno del método se escribe primero. Nuestro método no devuelve ningún valor, por lo que escribimos void.
3) Luego en la firma está el nombre del método (print).
4) Entre paréntesis hay una lista de argumentos. Los argumentos están separados por comas. Para cada argumento, se especifica su tipo y nombre, separados por un espacio. En nuestro caso, solo hay un argumento, tiene el tipo int y el nombre age, por lo que no hay comas.
5) Después de eso viene el código del método entre llaves. Para devolver un valor de un método, escribe return <value>;. En el ejemplo, el método no devuelve nada, por lo que se puede omitir return. Para terminar prematuramente la ejecución de un método, puede escribir return;.
6) En la propia clase, podemos referirnos a los campos del objeto de esta clase por su nombre.

Modificadores de acceso
De forma predeterminada, todos los campos y métodos de una clase en Java son privados. Esto significa que nadie puede acceder a ellos, lo que significa que fuera de los objetos de esta clase, ningún método puede usar los campos y métodos de los objetos de esta clase.

Los campos y métodos se pueden hacer públicos con el modificador de accesopublic. También hay un modificador private que hace que el campo sea privado. Es opcional ya que todos los campos y métodos son privados por defecto. Este es un ejemplo del uso de los modificadores public  y private. Libro de clase { Nombre de cadena público; String autorNombre; requisito de edad privado; Cadena de texto; número de páginas int público; int obtenerLongitudTexto() { devolver la longitud del texto(); } public int getAverageLetterCount() { volver getTextLength() / pageCount; } privado int getDifficuiltyLevel() { return 5 * ageRequirement * text.Length(); } }
En esta versión de la clase Book, los campos name y pageCount se hacen públicos para su lectura y modificación en otros objetos. El método getAverageLetterCount() también está disponible para ser llamado desde objetos de otras clases. Todos los demás campos y métodos permanecen privados y solo están disponibles en los métodos de esta clase. En el método público getAverageLetterCount() podemos llamar al método privado getTextLength() porque getAverageLetterCount() pertenece a la clase misma. Pero no funcionará con un método de otra clase.

Pero, ¿por qué entonces hacer que los campos sean privados? En el código Java, en su mayoría solo verá campos privados. El hecho es que si el acceso a los campos privados se lleva a cabo a través de los métodos públicos del objeto, entonces con dicho acceso a los campos privados será posible realizar acciones y verificaciones adicionales. Más sobre esto estará en la lección sobre encapsulación.

Las lecciones hasta ahora han discutido la creación de clases, que son plantillas para crear objetos. En la misma lección, se describirá el proceso de creación y uso de los propios objetos.

Enlaces
En el lenguaje Java, una variable nunca puede almacenar un objeto. En cambio, Java tiene referencias que apuntan a la ubicación de un objeto en la memoria.
La sintaxis para crear una variable de tipo objeto de referencia es la siguiente:
<Nombre de la clase> <nombre de la variable>;
Vale la pena señalar que indicamos inmediatamente la clase cuyos objetos serán referenciados.

Ejemplo: una variable llamada "b" que apunta a la clase Libro:

Libro b;

De la misma manera, puede crear campos de clase (puede agregar un modificador de acceso allí). Puede crear matrices de referencias y devolverlas desde los métodos. Ejemplo:

clase pública Biblioteca {
  Libro público[] libros;
  Libro público findBookWithName(String name) {
//código que encuentra el libro correcto
  }
};


Conclusión: en muchos sentidos, puedes trabajar con referencias de la misma manera que con variables de otros tipos elementales (int, long, double...).