Começando com Java 9 Fundamentos #7

Tempo de leitura: 4 min

Escrito por blackzig
em 31/03/2020

Paradigma de Orientação a Objetos

No paradigma de orientação de objetos (OO), um programa que consiste na interação de objetos. Um objeto que encapsula dados e algoritmos.

Dados define um estado de um objeto. Algoritmos define o comportamento de um objeto.

Um objeto comunica com outros objetos mandando mensagens para eles. Quando um objeto recebe uma mensagem, a resposta é a execução de algoritmos, o qual pode modificar o estado.

O paradigma de orientação de objeto se diferencia do paradigma imperativo e funcional.

No paradigma imperativo e funcional, dados e algoritmos são separados, enquanto no paradigma de orientação de objetos, dados e algoritmos não são separados; eles são combinados em uma entidade, o qual é chamado de objeto.

Classes são a unidade básica do paradigma de orientação a objetos. Similarmente objetos são definições dentro de um grupo chamado de classe.

A definição de classe é utilizada para criar um objeto. Um objeto é conhecido como instância de uma classe. Uma classe consiste em instâncias de variáveis e métodos.

O valor da instância da variável de um objeto define o estado do objeto. Diferente de objetos de uma classe que mantém seus estados separadamente.

Isto é, cada objeto de uma classe tem sua própria cópia de instâncias de variáveis. O estado de um objeto é mantido privado para o objeto.

Isto é, o estado de um objeto não pode ser acessado ou modificado diretamente de fora do objeto. Métodos da classe define o comportamento dos objetos.

Um método é como um procedimento (ou sub-rotina) no paradigma procedural. Métodos podem acessar/modificar o estado do objeto. Uma mensagem é enviada ao objeto por meio da invocação de um dos seus métodos.

Suponhamos que você quer representar uma pessoa real em um programa. Você irá criar a classe Pessoa e as instâncias irão representar pessoa no seu programa.

A classe Pessoa inclui três coisas:

  • Duas instâncias de variáveis: nome e sexo
  • Um construtor: Pessoa(String iniciaNome, String iniciaSexo)
  • Três métodos: getNome(), setNome(String novoNome) e getSexo()

Variáveis de instâncias guardam dados de um objeto. O valor de cada instância de variável representa o valor que corresponde a propriedade do objeto.

Cada instância da classe Pessoa terá uma cópia com os dados de nome e sexo. Os valores de todas as propriedades de um objeto estão juntos (gravados nas instâncias de variáveis) coletivamente define o estado do objeto naquele momento.

No mundo real, uma pessoa possui muitas propriedades, por exemplo, nome, sexo, peso, altura, cor de cabelo, endereço, telefone etc.

Contudo, quando você modela uma pessoa do mundo real para uma classe, você irá incluir apenas algumas dessas propriedades, as que são relevantes para a modelação do sistema. Só para demonstração, vamos apenas utilizar duas propriedades, nome e sexo.

Uma classe contém a definição (ou a planta) dos objetos. Deve haver um meio de construir (criar ou instanciar) objetos de uma classe.

Um objeto precisa ter valores iniciais para essas propriedades que irão determinar o estado inicial ao criar um objeto.

Um construtor de classe é utilizado para criar um objeto da classe. Uma classe pode ter vários construtores para facilitar a criação de objetos com diferentes estados iniciais.

A classe Pessoa fornece um construtor, o qual deixa você criar um objeto especificando os valores iniciais para nome e sexo. Vamos criar dois objetos da classe Pessoa:

Pessoa jose = new Pessoa(“José de Nazaré”, “Masculino”);

Pessoa maria = new Maria(“Maria de Nazaré”, “Feminino”);

O primeiro objeto é chamado de jose com os valores iniciais “José de Nazaré” no nome e “Masculino” no sexo.

O segundo objeto é chamado de maria com os valores iniciais “Maria de Nazaré” no nome e “Feminino” no sexo.

Métodos da classe representam comportamento desses objetos. Por exemplo, no mundo real, uma pessoa tem um nome para ser chamada e suas habilidades para mostrar quando requisitada.

Objetos da classe Pessoa tem habilidades que respondem a três diferentes mensagens: getNome, setNome e getSexo.

A habilidade de um objeto responde para uma mensagem que está implementada nos métodos.

Você pode enviar uma mensagem para getName, para o objeto Pessoa e irá retornar o nome. É a mesma coisa que você falar para uma pessoa: “Qual é o seu nome?” e a pessoa responder com o nome dela.

String nomeDeJose = jose.getNome(); //envia requisição para jose

String nomeDeMaria = maria.getNome();//envia requisição para maria

A requisição setNome para o objeto Pessoa pede para mudar o nome atual para um novo nome. O código a seguir muda o nome Maria de Nazaré para Virgem Maria.

nomeDeMaria.setNome(“Virgem Maria”);

Se você agora fizer uma requisição para o getName não irá retornar Maria de Nazaré e sim Virgem Maria.

Você pode notar que o objeto Pessoa não tem a requisição setSexo. O sexo da Pessoa não pode ser mudado depois de criado.

Contudo, você tem a requisição getSexo. O que um objeto pode ou não pode responder depende da sua modelagem.

No caso do objeto Pessoa, nós decidimos que não teria a habilidade de responder a requisição setSexo.

O paradigma da orientação de objetos é muito poderoso para modelagem do mundo real para o modelo computacional.

O paradigma da orientação de objetos é natural e intuitivo, é só imaginar tudo como um objeto. Contudo, nem sempre dá certo.

Algumas vezes, a solução para um problema não está no paradigma da orientação de objetos. Nesses casos, você precisa usar o paradigma que melhor resolve o problema.

O paradigma de orientação de objetos tem uma curva de aprendizado. É muito mais do que criar objetos no seu programa.

Abstração, encapsulamento, polimorfismo e herança são alguns dos recursos importantes que o paradigma de orientação de objetos possui. Você precisa conhecer esses recursos para tirar vantagem desse paradigma.

Você vai gostar também:

Para enviar seu comentário, preencha os campos abaixo:

Deixe um comentário


*


*


Seja o primeiro a comentar!

Damos valor à sua privacidade

Nós e os nossos parceiros armazenamos ou acedemos a informações dos dispositivos, tais como cookies, e processamos dados pessoais, tais como identificadores exclusivos e informações padrão enviadas pelos dispositivos, para as finalidades descritas abaixo. Poderá clicar para consentir o processamento por nossa parte e pela parte dos nossos parceiros para tais finalidades. Em alternativa, poderá clicar para recusar o consentimento, ou aceder a informações mais pormenorizadas e alterar as suas preferências antes de dar consentimento. As suas preferências serão aplicadas apenas a este website.

Cookies estritamente necessários

Estes cookies são necessários para que o website funcione e não podem ser desligados nos nossos sistemas. Normalmente, eles só são configurados em resposta a ações levadas a cabo por si e que correspondem a uma solicitação de serviços, tais como definir as suas preferências de privacidade, iniciar sessão ou preencher formulários. Pode configurar o seu navegador para bloquear ou alertá-lo(a) sobre esses cookies, mas algumas partes do website não funcionarão. Estes cookies não armazenam qualquer informação pessoal identificável.

Cookies de desempenho

Estes cookies permitem-nos contar visitas e fontes de tráfego, para que possamos medir e melhorar o desempenho do nosso website. Eles ajudam-nos a saber quais são as páginas mais e menos populares e a ver como os visitantes se movimentam pelo website. Todas as informações recolhidas por estes cookies são agregadas e, por conseguinte, anónimas. Se não permitir estes cookies, não saberemos quando visitou o nosso site.

Cookies de funcionalidade

Estes cookies permitem que o site forneça uma funcionalidade e personalização melhoradas. Podem ser estabelecidos por nós ou por fornecedores externos cujos serviços adicionámos às nossas páginas. Se não permitir estes cookies algumas destas funcionalidades, ou mesmo todas, podem não atuar corretamente.

Cookies de publicidade

Estes cookies podem ser estabelecidos através do nosso site pelos nossos parceiros de publicidade. Podem ser usados por essas empresas para construir um perfil sobre os seus interesses e mostrar-lhe anúncios relevantes em outros websites. Eles não armazenam diretamente informações pessoais, mas são baseados na identificação exclusiva do seu navegador e dispositivo de internet. Se não permitir estes cookies, terá menos publicidade direcionada.

Visite as nossas páginas de Políticas de privacidade e Termos e condições.

Importante: Este site faz uso de cookies que podem conter informações de rastreamento sobre os visitantes.
Criado por WP RGPD Pro

Aprenda a Criar e Programar Jogos Completos em 2D e 3D!

Seja um Desenvolvedor de Jogos Profissional