Obra: Java/Características de linguagens orientadas a objetos
Matéria: Filosofia
antes de aprender java preciso conhecer quais são as características da programação orientada objetos poo que ela possui este capítulo tem por intuito mostrar filosofia da poo para programadores não habituados ela que são objetos em programação objetos nada mais são do que um conjunto de dados sobre qual estão definidas algumas operações se fôssemos criar um programa capaz de gerar na tela formas geométricas por exemplo poderíamos criar um objeto chamado quadrado que seria um conjunto de quatro números que em poo são chamados de atributos que representam os seus vértices objeto quadrado poderia possuir as operações que em poo são chamadas de métodos mudaposicao que serviria para posicionar quadrado em uma coordenada específica passada como argumento mudacor que trocaria cor do quadrado desenhado na tela os atributos de um objeto são quaisquer variáveis que eles possuam que representam um número caractere ou string se fôssemos programar um jogo por exemplo personagem que jogador controla poderia possuir atributos chamados força resistência velocidade que seriam variáveis inteiras dentro do código ele também poderia possuir um atributo chamado posição que seria um vetor de inteiros que armazenariam sua coordenada na tela os métodos de um objeto podem ser qualquer ação que objeto pode executar no jogo do exemplo acima personagem principal poderia possuir métodos chamados pular atirar andar os métodos nada mais são do que funções executadas sobre os atributos de um objeto classes classes nada mais são do que uma declaração de um objeto no começo do código nesta declaração você especifica quais são os atributos métodos comportamentos de seu objeto por exemplo uma vez que você crie uma classe chamada quadrado você pode passar criar novos objetos pertencentes esta classe que poderiam ter diferentes valores para cada um de seus atributos classe um conjunto de especificaçãos técnica de um objeto nesta declaração pode se especificar quais são os atributos metodos comportamentos da classe por exemplo uma vez que seja criada uma classe chamada quadrado pode se passar criar novos objetos pertencentes esta classe que podem ter diferentes valores para cada um de seus atributos herança herança capacidade que as classes tem de passar informações umas para as outras através da herança possível criar fácil rapidamente novos tipos de classes baseadas nas classes existentes por exemplo assumindo que existe uma classe chamada veiculo poderíamos gerar uma nova classe chamada carro outra classe chamada caminhao que herdam ou são filhas de veiculo classe veiculo possui todos os atributos que tem em comum entre um caminhão um carro ambos possuem caracteristicas atributos como número de rodas tipo de combustível quantidade de portas etc estes atributos estão definidos na classe veiculo por sua vez as classes carro caminhão além de herdarem os atributos da classe veiculo podem possuir seus próprios atributos exclusivos mesmo ocorre com os metodos por exemplo classe caminhao
m possuir seus próprios atributos exclusivos mesmo ocorre com os metodos por exemplo classe caminhao que poderia ter atributo numero de marchas reduzidas que não faz sentido para um carro apenas para um caminhão para identificar se dois objetos tem uma relação de herança deve se analisar se relacionamento do tipo um tipo de por exemplo carro um tipo de veiculo logo carro herda de veiculo cachorro um tipo de mamifero assim por diante nota em outras linguagens orientadas objeto como existe herança múltipla ou seja uma classe pode herdar de mais de uma ex morcego um tipo de mamífero morcego um tipo de animal que voa em java não existe herança múltipla que pode ser feito para simular isso implementar uma interface mas isso será visto mais adiante sobrecarga de métodos algumas vezes uma mesma operação pode ser feita de diversas maneiras utilizando informações diferentes isso pode ser feito utilizando sobrecarga de métodos consiste em criar mais de um método com mesmo nome porém com parâmetros de entrada diferentes isso muito usado quando uma função tem valores padrão cria se um método que recebe parâmetros de entrada outro que não recebe nenhum este ultimo irá invocar primeiro passando os valores padrão sobreescrita de métodos quando herança usada classe filha herda todos os métodos da classe pai porém as vezes isso pode trazer alguns problemas para dar mais flexibilidade possível sobreescrever um método ou seja criar uma nova implementação daquele método para classe filha polimorfismo poli muitas morphos formas permite ao desenvolvedor utilizar uma mesma assinatura de método para desempenhar funções similares de acordo com contexto um exemplo de polimorfismo no exemplo utilizado na herança seria um método que retorna autonomia do veículo no carro este método tem que verificar potência do motor combustível usado alcool ou gasolina no caminhão teria que verificar peso da carga potência do motor vantagem do polimorfismo está no fato que um trecho de código muitas vezes não sabe se objeto veiculo um caminhão ou um carro bastando chamar método que retorna autonomia se objeto for um carro virtual machine invoca método do carro se objeto for um caminhão ela invoca método do caminhão associação uma associação define uma relação entre duas classes que permite com que um objeto de uma classe utilize objetos de outra classe exemplo uma classe motorista possui uma associação com classe volante visto que objetos da classe motorista vão utilizar objetos da classe volante agregação composição são dois casos específicos de associação agregação agregação um relacionamento onde classe se relaciona com classe de forma com que objetos da classe utilizam objetos da classe no entanto existência dos objetos da classe não depende da existência dos objetos da classe exemplo um objeto da classe estudante utiliza objetos da classe saladeaula porém existência dos objetos da classe estudante não depende da existência dos objetos da classe saladeaula composição composição um rela
e estudante não depende da existência dos objetos da classe saladeaula composição composição um relacionamento onde classe se relaciona com classe de forma com que objetos da classe utilizam objetos da classe existência dos objetos da classe dependem da existência dos objetos da classe exemplo um objeto da classe saladeestar dependem de objetos da classe casa vantagens da programação orientada objetos modularidade uma vez que um objeto criado ele pode funcionar independente do resto do programa ele pode ser aproveitado em outros programas ou substituído por algum outro objeto encapsulamento uma vez que objetos são criados você só precisa se concentrar em usá los sem se preocupar com os detalhes de sua implementação desvantagens da programação orientada objetos alguns tipos de programas podem ficar mais difíceis de serem criados usando poo por ser uma filosofia de programação de mais alto nível os programas tendem ser mais lentos ver também programação orientada objetos conceitos