> For the complete documentation index, see [llms.txt](https://educacion.gitbook.io/programacion/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://educacion.gitbook.io/programacion/ud3-introducion-a-programacion-orientada-a-obxectos/introduccion-a-la-programacion-orientada-a-objeto.md).

# Introducción a la programación orientada a objeto

<figure><img src="/files/gMfetoTbLlNK0qiT33fP" alt="" width="352"><figcaption></figcaption></figure>

A programación orientada a obxectos é un paradigma de programación que xurde a partir nos anos 70 do século XX. Este paradigma supón un cambio radical sobre todo na forma de pensar os programas.

Ata o momento, mediante os paradigmas de **programación estruturada e programación modular**, os programas entendíanse coma un conxunto de instrucións para realizar unha tarefa ( aínda que estas instrucións podían incluír estruturas condicionais ou repetitivas, ou estar agrupadas en libreriras, funcións ou procedementos).

A **programación orientada a obxectos** e un paradigma que se basea na creación de un conxunto de obxectos, relevantes para o dominio de resolución do problema, que interatuan entre si para resolver o problema a tratar.

## Elementos da programación orientada a obxectos

* A programación orientada a obxectos xira arredor do concepto de obxecto.
* Así un **obxecto** é unha entidade que identidade, uns **atributos** particulares (propiedades ou características), e un comportamento, que queda definido polo seus **métodos** (definen o comportamento do obxecto)
* Durante a execución, os obxectos reciben e envían **mensaxes** a outros obxectos para realizar as accións requiridas.

<figure><img src="/files/aQEFylLzcAB0Z0zX2sG6" alt=""><figcaption></figcaption></figure>

* Os obxectos creanse a partir de **clases**. Unha clase é "plantilla" que define la estructura (atributos y métodos) que van utilizar los obxectos que se instancien en base a ela. Unha clase representa unha entidade ou conceptos como substantivos da linguaxe. É un modelo que define un conxunto de propiedades ou estados que se denominan atributos e un conxunto de operacións que se denominan métodos, sendo a base para a instanciación dos obxectos.

Por exemplo, da clase Persoa poden existir dous obxectos Pepe e Marta (esta é a súa identidade).

* "Pepe é un home que vive en Valencia, a súa dni é 20202020A traballa de profesor, e ten 45 anos de idade
* Marta é unha muller de 25 anos, o seu dni é 30303030B, vive en Madrid e é periodista

Se incluisemos estos elementos nun programa orientado a obxectos, definiriamolo seguinte:

* Unha **clase persoa**, cos seguintes elementos
  * **Atributos**: nome, dni, idade, cidade e profesión
  * **Métodos**: obterDatos(), cambiarProfesion(profesion) ou cambiarCidde().
  * Pepe e Marta, poderían ser os **identificadores** que poderíamos utilizar para instanciar obxectos da clase Persona. Serían os nomes da variable

A POO é unha maneira de deseñar e desenvolver software que trata de imitar a realidade tomando algúns conceptos esenciais dela.

### Convencións de nombrado en POO

| Elemento | Convención                                                       | Exemplo      |
| -------- | ---------------------------------------------------------------- | ------------ |
| Clase    | Escribese en maiúscula. (camelCase) Unha clase por ficheiro Java | Persoa       |
| Método   | minúscula (camelCase)                                            | obterDatos() |
| Variable | minuscula                                                        | idade        |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://educacion.gitbook.io/programacion/ud3-introducion-a-programacion-orientada-a-obxectos/introduccion-a-la-programacion-orientada-a-objeto.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
