Disciplina: Programação Estruturada e Orientada a Objetos Aula 1 Orientação a Objetos Apresentação do paradigma Orientado a Objetos. Alicerce da POO: Herança, Encapsulamento e Polimorfismo. Professor: Jorge Felliphe | [email protected] Apresentação • O paradigma orientado a objetos foi idealizado quando se pensou em programar/implementar sistemas de modo mais simples e abstrato, tentando aproximar o código (trabalho de desenvolvimento) do mundo real. Prof. Jorge Felliphe ([email protected]) Vantagem • Frente ao paradigma estruturado, a POO (Programação Orientada a Objetos) destaca-se pela grande abstração e facilidade de reuso e expansão/manutenção. • Modelar o mundo real e seu comportamento, abstraindo-o em OBJETOS é mais prático do que focar em FUNÇÕES E BIBLIOTECAS... Prof. Jorge Felliphe ([email protected]) O que seria mais simples dizer? • “Amanhã irei abrir a porta daquele veículo movido a combustível, entrarei, me sentarei, darei a partida no motor, pisarei na embreagem, engatarei a primeira marcha, acelerarei, controlarei a direção em que o carro irá se mover utilizando o volante ao mesmo tempo em que passarei as marchas de acordo com a velocidade até chegar ao meu trabalho, onde, através da chave da ignição o desligarei quando estiver parado na devida vaga do estacionamento”. • Ou “Vou usar o meu carro para ir ao trabalho amanhã” Prof. Jorge Felliphe ([email protected]) Abstração • Na POO, graças a sua ideologia, podemos abstrair as informações e pensar de forma simplificada que a mensagem continuará a ser compreendida! • CLASSE em POO é um “molde” do que temos no mundo real e desejamos programar, onde, à partir dela, instanciaremos (criaremos) os OBJETOS. Prof. Jorge Felliphe ([email protected]) Classe e Objetos • Imagine que desejamos programar o carro: CLASSE Carro Variáveis Internas (ATRIBUTOS) Comportamentos (MÉTODOS) Prof. Jorge Felliphe ([email protected]) OBJETOS (instâncias) Na prática, temos: Classe (“molde”) Carro String Nome String Cor Atributos (variáveis) int AnoFabricacao double Peso Carro C1 -ATRIBUTOS (características próprias): Relâmpago McQueen, vermelho, 2010, 500 kg, 2,1 m, 3,4 m, false. -MÉTODOS: comportamentos de um carro. double Largura double Comprimento boolean Guincho Locomover ( ) Métodos (comportamento) Buzinar ( ) FazerManutencao ( ) UsarGuincho ( ) Prof. Jorge Felliphe ([email protected]) Carro C2 -ATRIBUTOS (características próprias): Mater, marrom, 1815, 800,5 kg, 2,9 m, 4,5 m, true. -MÉTODOS: comportamentos de um carro. Hora de praticar! Carro String Nome String Cor int AnoFabricacao double Peso double Largura double Comprimento boolean Guincho Locomover ( ) Buzinar ( ) FazerManutencao ( ) UsarGuincho ( ) Prof. Jorge Felliphe ([email protected]) • Vamos tentar implementar esta classe Carro ao lado e, dentro do main iremos instanciar dois carros e chamar suas funcionalidades (métodos)! Programação Orientada e Objetos • Os três pilares da POO são as seguintes características/práticas: – Herança: • Classes/Objetos podem herdar características de uma classe-“principal” (classe-mãe). Vantagem: ? – Encapsulamento • Classes/Objetos e suas funcionalidades/comportamento são implementadas e disponibilizadas de forma transparente para o programador, de modo que o mesmo não precise ler o código para entender o comportamento, mas apenas se preocupe em saber o que deve enviar para a classe e que ele pode receber dela. – Polimorfismo • Capacidade de uma mesma funcionalidade (método) assumir comportamentos distintos, ou seja, várias formas (poli-formas). Prof. Jorge Felliphe ([email protected]) Atividade! • Vamos implementar o conceito de herança: – Crie uma classe-“principal” (classe-mãe) denominada Automovel e crie 5 classes- “secundarias” (classefilha) que herdam os atributos e métodos de Automovel. Elas podem se chamar Carro, Bicicleta, Moto, Barco e Aviao. – Tecnicamente dizemos que a classe Automovel é super classe de Carro, Bicicleta, Moto, Barco e Aviao, pois estas herdam a classe Automovel. Prof. Jorge Felliphe ([email protected]) Dúvidas? Prof. Jorge Felliphe ([email protected])