330 likes | 618 Views
Programação Orientada a Objetos. Artur Henrique Kronbauer arturhk@gmail.com. Conteúdos Abordados. Programação Orientada a Objetos Como modelar com Orientação a Objetos(OO) Modelos, seus dados e comportamentos Definição de classes Definição de tipos primitivos e não primitivos
E N D
Programação Orientada a Objetos Artur Henrique Kronbauer arturhk@gmail.com
Conteúdos Abordados • Programação Orientada a Objetos • Como modelar com Orientação a Objetos(OO) • Modelos, seus dados e comportamentos • Definição de classes • Definição de tipos primitivos e não primitivos • Construtores • Criação de Objetos • Sobrecarga • Interação entre Objetos • Generalização • Especialização • Herança
O que é POO? • Programação Orientada a Objetos é uma metodologia de desenvolvimento de software. • Sua principal vantagem é a proximidade com a forma que os seres humanos visualizam e entendem o mundo ao seu redor. • Tem como principal objetivo facilitar a modelagem e desenvolvimento de sistemas, através da interação entre objetos.
Como podemos modelar com OO? • Vamos imaginar a seguinte situação: • A esposa de um jovem casal, se encontra no segundo mês de gravidez. No meio da noite, a grávida acorda com uma azia terrível. Como é natural, a mulher pede que seu marido providencie um antiácido para ela.
Como podemos modelar com OO? • Como poderíamos representar esse problema sobre a ótica dos Objetos? • o objeto marido recebe uma mensagem do objeto esposa. • O objeto marido responde a essa mensagem mediante a uma ação: buscar antiácido. • A esposa não tem que dizer a ele onde ele deve procurar, é responsabilidade do marido a ação de procurar o antiácido. • Ao objeto esposa basta ter emitido uma mensagem ao marido.
Modelos e Dados • Os modelos na POO são chamados de classes. • As classes especificam as características dos objetos materializados a partir delas. • Tais características são chamados de atributos. • Ao ser materializado um objeto dizemos que criamos uma Instância da classe. • Instâncias distintas de uma mesma classe possuem os mesmos atributos, entretanto com possíveis diferenças de valores.
Modelos e Dados • Os objetos são diferenciadas pelos seus nomes de referência e não pelo valor de seus atributos.
Modelos e Comportamento • Em muitas situações os problemas do mundo real ao serem modelados para o mundo computacional, necessitam ser fragmentados de acordo com as ações que esse modelo especificará para a representação do problema. • Objetos possuem comportamentos os quais são representados nas classes através dos métodos.
Modelos e Comportamento • A fragmentação permite que o problema seja representado por um conjunto de métodos, os quais representam as ações do modelo. • Vantagens de ter vários métodos em um modelo: • facilidade em escrever o modelo; • utilizações repetidas de um mesmo método; • facilidade em dar manutenção; • utilização de parametrizações; • utilização adequada de recursos.
Definição de Tipos • Os tipos aparecem tanto nas declarações de atributos como na declaração de métodos. • Os tipos podem ser primitivos: • int, float, char, double, byte, boolean. • Os tipos podem ser Não primitivos (nomes de outras classes previamente definidas) • String, Mamiferos Classes também são tipos!
Exemplos da utilização de Tipos • Para definição de Atributos:
Exemplos da utilização de Tipos • Para a construção de Métodos:
Construtores • Um construtor é um método que possui o mesmo nome da classe onde ele está declarado. • Seu objetivo é inicializar o estado interno de um objeto (seus atributos). • O construtor não possui retorno de nenhum tipo, nem mesmo void. • Um construtor sempre é chamado através do operador new no momento de se instanciar um objeto.
Sobrecarga de Métodos e Construtores • Diferentes métodos podem ter o mesmo nome, porém com listas de parâmetros (assinaturas) diferentes. • Esse conceito é chamado de sobrecarga. • Este fato muitas vezes é necessário para modelarmos comportamentos semanticamente semelhantes, porém alimentados com dados diferentes.
Exemplo de Sobrecarga class soma { int calculo(int numero1, int numero2) { int resposta; resposta = numero1 + numero2; return resposta; } int[] calculo(int vetor1[], int vetor2[]) { int[] resposta = new int[vetor1.length]; int i; for (i=0; i < vetor1.length; i++) { resposta[i] = vetor1[i] + vetor2[i]; } return resposta; } }
Interação entre Objetos • Modelagens complexas necessitam da interação entre vários objetos para a solução do problema. • A idéia é chamada de “Dividir para conquistar”. • Em POO, podemos ter várias classes com objetivos específicos, as quais ao interagirem através de seus objetos solucionam problemas mais abrangente.
Exemplo de Interação entre Objetos Controle de Estoque
Generalização • Dona Cicinha quer evoluir o sistema para controlar o faturamento. • Para isso será necessário controlar os quitutes vendidos. • Ao ser criadas as classes quitutes e bebidas, podemos notar que alguns atributos e métodos são iguais. • A criação de uma classe chamada produtos poderia agrupar as semelhanças.
Generalização • Através da generalização podemos agrupar em uma classe um conjunto de definições comuns a diferentes classes.
Especialização • A especialização é o caminho inverso da generalização. Partindo de um modelo mais genérico podemos acrescentar novas características e comportamentos aos já existentes.
Herança • Herança é um dos mecanismos fundamentais de relação entre classes na orientação a objetos. • Ela relaciona uma classe pai (superclasse) com outras classes filhas (subclasses) de forma hierárquica. • As subclasses herdam todos os atributos e métodos da superclasse e podem criar os seus próprios métodos e atributos.
Herança • A definição de herança em uma classe ocorre na linguagem Java através da palavra “extends” colocada logo após o nome da classe que herda de outra. • Uma subclasse para referenciar os métodos ou atributos da superclasse utilizamos a palavra reservada super.
Assuntos para a próxima Aula • Modificadores de acesso a Atributos e Métodos • Polimorfismo • Classes Abstratas • Interfaces • Pacote de Classes
Bibliografia • BARNES, D e Kölling, M. Programação Orientada a Objetos com Java. 2a Edição: Editora Pearson Education. 2007. • DEITEL, H. M. e DEITEL, P. J. Java como Programar. 4a Edição: Editora Bookman. 2003. • SANTOS, R. Introdução à Programação Orientada a Objetos Usando Java. 1a Edição: Editora Campus. 2003.