Vídeo: Aula de Programação Java 1 - Classes, Métodos, Atributos e Objetos 2024
A programação orientada a objetos é um tipo de programação de computador - como o Java - com base na premissa de que todos os programas são essencialmente simulações computadorizadas de objetos do mundo real ou conceitos abstratos. Por exemplo:
-
Os simuladores de vôo tentam imitar o comportamento de aviões reais.
-
Muitos jogos de computador são simulações de jogos reais que os humanos praticam, como baseball, corrida NASCAR e xadrez.
-
Mesmo os programas de negócios podem ser pensados como simulações de processos de negócios, como pedidos, atendimento ao cliente, envio e cobrança.
Objetos são entidades de programação que possuem certas características básicas:
-
Identidade: Cada objeto em um programa orientado a objeto tem uma identidade . Em outras palavras, cada ocorrência de um tipo particular de objeto - uma instância - pode ser distinguida de qualquer outra ocorrência do mesmo tipo de objeto, bem como de objetos de outros tipos.
Cada instância de objeto tem sua própria localização na memória do computador. Assim, dois objetos, embora possam ser do mesmo tipo, tenham seus próprios locais de memória distintos. O endereço da localização inicial para um objeto fornece uma maneira de distinguir um objeto de outro porque nenhum objeto pode ocupar o mesmo local na memória.
Java mantém a identidade de cada objeto praticamente pra si mesmo. Em outras palavras, não existe uma maneira fácil de obter o endereço de memória de um objeto; O Java calcula que não é da sua conta, e com razão. Se Java disponibilizasse essa informação prontamente para você, você ficaria tentado a mexer com ela, o que poderia causar todos os tipos de problemas, como qualquer programador C ou C ++ pode lhe dizer.
Os objetos Java têm algo chamado código hash, , que é um valor int que é gerado automaticamente para cada objeto e quase representa a identidade do objeto. Na maioria dos casos, o código de hash para um objeto é baseado no endereço de memória do objeto, mas nem sempre. O Java não garante que dois objetos distintos não tenham o mesmo código de hash.
Quando usado com objetos, o operador de igualdade (==) realmente testa a identidade do objeto de duas variáveis ou expressões. Se eles se referem à mesma instância do objeto, as duas variáveis ou expressões são consideradas iguais.
-
Tipo: A programação orientada a objetos permite atribuir nomes aos diferentes tipos de objetos em um programa. Em Java, as classes definem tipos. Portanto, quando você cria um objeto de um tipo, você está dizendo que o objeto é do tipo especificado pela classe.A seguinte declaração de exemplo cria um objeto do tipo Fatura:
Fatura i = new Fatura ();
Nesse caso, a identidade desse objeto (ou seja, seu endereço na memória) é atribuída à variável i, que o compilador sabe, pode conter referências a objetos do tipo Fatura.
-
Estado: Embora cada instância de um determinado tipo de objeto tenha os mesmos atributos, cada instância tem um estado diferente: ou seja, uma combinação de valores diferente para cada um de seus atributos.
Embora alguns atributos de um objeto sejam públicos, outros podem ser privados. Os atributos privados podem ser vitais para a operação interna do objeto, mas ninguém fora do objeto sabe que eles existem. Eles são como seus pensamentos particulares: eles afetam o que você diz e faz, mas ninguém os conhece senão você.
-
Comportamento: Outra característica dos objetos é que eles têm comportamento, , o que significa que eles podem fazer as coisas. Como o estado, o comportamento específico de um objeto depende do seu tipo. Ao contrário do estado, o comportamento não é diferente para cada instância de um tipo.
Suponha que todos os alunos em uma sala de aula tenham calculadoras do mesmo tipo. Peça a todos para retirar as calculadoras e adicione quaisquer dois números. Todas as calculadoras exibem um número diferente, mas todos adicionam da mesma maneira; isto é, todos têm um estado diferente, mas o mesmo comportamento.
Outra maneira de dizer que os objetos têm comportamento é dizer que eles fornecem serviços que podem ser usados por outros objetos. Você provavelmente já viu muitos exemplos de objetos que fornecem serviços a outros objetos. Os objetos criados a partir da classe NumberFormat, por exemplo, fornecem serviços de formatação que transformam valores numéricos em cadeias bem formatadas, como $ 32. 95.
Em Java, o comportamento de um objeto é fornecido por seus métodos. Assim, o método de formato da classe NumberFormat é o que fornece o comportamento de formatação para objetos NumberFormat.