Revisão POO Profa. Cintia Carvalho Oliveira

Slides:



Advertisements
Apresentações semelhantes
Introdução a Programação Orientada a Objetos
Advertisements

Herança, Polimorfismo e Classes Abstratas em Java
Java: Pacotes e Modificadores de Visibilidade
Modelagem Orientada a Objetos
De 17 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes Aula.
Generalização, Especialização e Conceitos
Iniciação ao Java – Márcio F. Campos
Refatorações Experiência é aquela coisa maravilhosa que permite que você reconheça um erro tão logo o cometa novamente F.P. Jones.
Polimorfismo e Classes Abstratas Profa
Introdução ao paradigma de programação: Orientado a Objetos
Diagrama de Classes.
Linguagem de Programação II
Linguagem de Programação II
Interfaces em Java1 Interfaces Prof. Ricardo Linden.
Paradigmas da Programação – Semestre 1 – Aula 5
Herança e Polimorfismo
Classes e objetos P. O. O. Prof. Grace.
Estrutura de Dados em Java
Curso de extensão em Desenvolvimento Web
JAVA: Conceitos Iniciais
Introdução a programação (if669cc)
Programação Orientada a Objetos com Java
Aula prática 13 Orientação a Objetos – C++ Parte 1
Sobrecarga e Encapsulamento
Programação Orientada à Objetos
Programação I Aula 2 (Métodos)
Linguagem de Programação JAVA
Classes, Objetos, Atributos e Métodos JAVA
Professora Lucélia Oliveira
Orientação a Objetos Parte I
Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa This.
Programação Orientada à Objetos
Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Membro Static.
Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Classes e Objetos em Java.
Programação Orientada à Objetos
Paradigmas da Programação – Semestre 1 – Aula 9 Professor: Eduardo Mantovani )
© Ricardo Pereira e Silva
Orientação a Objetos Parte II
Aula prática 14 Orientação a Objetos – C++ Parte 2
Programação Orientada a Objetos - Java
Implementação Orientada a Objetos – Aula 03
Análise Orientado aos Objetos Prof. Wolley W. Silva
Programação Orientada a Objetos - Java Professor: Jean Carlo Mendes.
Programação Orientada à Objetos
Curso de Aprendizado Industrial Desenvolvedor WEB
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng
Prof. Gilberto Irajá Müller
Orientação a Objetos usando Java
Prof.: Bruno Rafael de Oliveira Rodrigues. Construtor é bloco declarado que é chamado no momento em que o Objeto é criado (instanciado). Todas as classes.
Polimorfismo.
1 Marcio de Carvalho Victorino JAVA. 2 Declaração de Atributos [ ] [transient] [volatile] [static] [final] ; controle de acesso –public, package (default),
Interfaces POO Avançado.
Classes Abstratas e Interface
Prof.: Bruno Rafael de Oliveira Rodrigues.  Existe para poder servir de molde para outras classes.  Deve ser declarada tal usando-se a palavra chave.
Paradigmas de Programação –Aula 7 Lab 2 Professores: Eduardo Mantovani Fábio Paula Santos.
Herança Modelagem e Programação Orientada a Objetos
Paradigmas da Programação – Semestre 1 – Aula 8 Professor: Eduardo Mantovani )
Bruno Inojosa MCP .NET Framework
Introdução a Orientação a Objetos
Classes abstratas São classes das quais não se pode instanciar objetos. São classes das quais não se pode instanciar objetos. Seu objetivo é ser herdada.
2 – Revisão de Programação Orientada a Objetos
Módulo II Capítulo 1: Orientação a Objetos
UCSal – Bacharelado em Informática Tópicos Especiais em Informática II Profa. Semíramis Assis
Paradigmas da Programação – Semestre 1 – Aula 7 Professor: Eduardo Mantovani )
Prof.: Bruno Rafael de Oliveira Rodrigues. Herança Possibilita a uma classe usar campos ou métodos definidos em outra classe. Assim a classe pai possui.
Implementação Orientada a Objetos – Aula 08 Herança, sobrescrita de métodos e polimorfismo Prof. Danielle Martin Universidade de Mogi das Cruzes
Padrões de Projeto 2 – Revisão de Programação Orientada a Objetos.
Herança em Java Curso: Informática Disciplina: Programação Orientada a Objetos Prof. Abrahão Lopes
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Transcrição da apresentação:

Revisão POO Profa. Cintia Carvalho Oliveira Doutoranda em Ciência da Computação – UFU Mestre em Ciência da Computação – UFU Bacharel em Ciência da Computação - UFJF

Pacotes Em geral, quando desenvolvemos pequenas aplicações, pode ser viável manter o código em um mesmo diretório. Em aplicações maiores sugere-se que o código seja agrupado, de forma que as classes relacionadas fiquem em um mesmo diretório. Esses diretórios - juntamente com os arquivos dentro deles - são chamados de pacotes  Supondo que uma classe chamada Pessoa pertença ao pacote br.com.nomeempresa.nomeprojeto, então seu nome completo será br.com.nomeempresa.nomeprojeto.Pessoa

Pacotes Para indicar que um arquivo fonte Java pertence a um dado pacote, a primeira linha de código deste arquivo deve ser a declaração: package br.com.nomeempresa.nomeprojeto Para referenciar uma classe de um pacote, é possível usar o nome completo da classe: import br.com.nomeempresa.nomeprojeto.Pessoa

Import Para Scanner temos que escrever: import java.util.Scanner; Por que não fizemos o mesmo com a classe System, String? System e String estão no pacote java.lang, que é implicitamente importado em todo programa Java

Import Não precisamos importar a biblioteca Scanner, é só utilizar o nome da classe totalmente qualificado, exemplo: Java.util.Scanner input = new java.util.Scanner(System.in); Qual você prefere?

Diagrama de Classe UML  Um dos mais importantes produtos das fases da análise e projeto orientados a objetos é o modelo de domínio da aplicação. Para representar esse modelo a Linguagem de Modelagem Unificada (UML) é uma das ferramentas que podemos adotar. A UML permite expressar o modelo de domínio em um diagrama de classes.

Diagrama de Classe  Uma classe descreve um grupo de objetos com características e comportamento similares, relacionamentos comuns com outros objetos e semântica comum. As características dos objetos são descritas pelos atributos e o comportamento é definido pelos métodos.

Classe Empregado

Modificadores de acesso Classe sem modificador de acesso. Pouco seguro. Suponha que qualquer objeto pudesse ter acesso ao atributo saldo de uma instância de ContaCorrente. Dessa forma, seria possível modificar o saldo de uma conta sem necessidade de fazer um depósito, por exemplo  De maneira a ajudar na tarefa de estabelecer esses limites, tanto os atributos quanto os métodos podem ter modificadores de acesso, que podem ser:

Modificadores de acesso public – atributos e métodos podem ser acessados por qualquer outro objeto. private – os membros da classe não são acessíveis por qualquer outro objeto. protected - membros que recebem esse modificador podem ser acessados fora do pacote apenas por objetos de classes que derivem desta através de herança; default - não é exatamente um modificador, mas sim um nível de acesso. Permite visibilidade apenas dentro do pacote. Não exige um modificador explícito.

Encapsulamento Os atributos não devem ser visíveis fora da classe e não se deve conhecer detalhes da implementação dos seus métodos. Essa prática recebe o nome de encapsulamento. Ou seja, devemos construir uma classe de forma que o usuário tenha acesso apenas ao seu conjunto de métodos - chamado de interface. Este conceito não deve ser confundido com o tipo abstrato interface, o qual define métodos que uma classe deve implementar. O tipo interface é definido como se fosse uma classe sem atributos e cujos métodos possuem apenas a assinatura.

Encapsulamento Se você estiver usando o NetBeans, selecione no menu Refatorar > Encapsular campos. Na janela que será aberta, pressione o botão Selecionar tudo. Na opção Javadoc você pode escolher se deseja comentários ou não. Os getters são métodos de leitura dos campos e os setters são os métodos de escrita. Esses métodos também são chamados de accessors e mutators, respectivamente. A palavra-chave this é usada para referenciar membros da instância corrente. Ou seja, this refere-se ao objeto que está executando o código onde esta palavra-chave pode ser vista.

Modificadores de Classes Além do modificador public podem ser usados final e abstract. final - a classe não pode ser estendida (herdada). Em alguns casos isso pode ser necessário. Por exemplo, String é uma classe de Java definida como final. Imagine a confusão que seria se os programadores pudessem estender String e redefinir seu comportamento. abstract - Uma classe que tem esse modificador é chamada abstrata e não pode ser instanciada, ou seja, você não pode criar um objeto a partir dela.

Construtores Os objetos são construídos utilizando a palavra-chave new. Quando usamos este termo, é executado um código que chamamos de construtor. Para que os objetos sejam instanciados, toda classe deve possuir, no mínimo, um construtor. Se o desenvolvedor não o criar explicitamente, o compilador cria um sem argumentos, que é denominado construtor padrão.

Construtores O construtor se assemelha a um método, com a diferença fundamental que um construtor não tem tipo de retorno. Eles devem ter exatamente o mesmo nome da classe onde são declarados e eventualmente podem ter os mesmos modificadores de acesso a membros. Em geral os construtores são usados para inicializar o estado das variáveis de instância. Caso não seja feito o compilador define valores padrão de acordo com o tipo de dado.

Construtor da classe Empregado

Construtores Uma classe pode ter mais de um construtor. Isso é bastante comum e é chamado sobrecarga. É aconselhável que a classe tenha um construtor sem argumentos. Importante quando é necessário estender a classe. Os construtores da subclasse, implicitamente, fazem uma chamada ao construtor sem argumentos da classe mãe

Programa

Modificadores de membros não referentes a acesso final – declaração de constante. métodos declarados como final não podem ser sobrescritos nas subclasses. Essa restrição garante que um método não será substituído, oferecendo certa segurança à sua implementação. static - Membros de uma classe podem ser declarados como static quando seu comportamento ou valor não dependem do estado de um objeto. Membros declarados como static pertencem à classe, em vez de a uma instância. Um exemplo: o método main() é o ponto de entrada para um programa Java, e a JVM o executa implicitamente sem que seja necessário instanciar um objeto.

Relacionamento entre classes Um cliente compra produtos em uma loja e é atendido por um vendedor, um aluno cursa uma disciplina que é ministrada por um professor. Duas classes podem se relacionar através de composição, agregação, associação e generalização/especialização. Composição e agregação são os relacionamentos todo-parte, onde um objeto é parte de outro, como no caso em que Monitor é parte de Computador. Quando um objeto utiliza outro, dizemos que isso é uma associação, tal como Professor ministra Disciplina A generalização/especialização ocorre quando um objeto herda características e comportamento de outro (herança), como no caso de Cachorro é um Anima

Agregação: Composição: É parte ou está contida em Uma classe que está contida na outra "vive" e constitui a outra. Se o objeto da classe que contém for destruído, as classes da agregação de composição serão destruídas juntamente, já que as mesmas fazem parte da outra

Herança

Relacionamento entre classes

Relacionamento TEM _ UM

Relacionamento TEM-UM

Main

Relacionamento É-UM O relacionamento generalização/especialização ocorre quando uma classe B é um subtipo de outra, A. A esse relacionamento chamamos comumente de herança.

Herança A palavra-chave super é usada para referenciar membros da superclasse. Toda classe em Java É-UM Object. Object é uma classe da API que é superclasse de todas as classes existentes em Java ou daquelas que são criadas pelo desenvolvedor Quando, na definição da classe, não for especificada uma superclasse - através do uso de extends - o compilador assume que a superclasse é Object. Professor estende Pessoa, que por sua vez estende Object. Todo construtor invoca o construtor de sua superclasse com uma chamada implícita a super().

Sobreposição Podemos no Java redefinir um método definido em uma superclasse em uma de suas subclasses. Este mecanismo é denominado sobreposição Vamos analisar um exemplo:

Sobreposição

Polimorfismo O Java permite tratar objetos das classes derivadas de forma genérica. Utilizamos a sobreposição de um método, ou seja, efetuamos a redefinição de um método definido em uma superclasse em uma de suas subclasses. Java disponibiliza o polimorfismo em tempo de execução, pois possibilita referenciar um objeto de uma classe derivada utilizando para tal uma referência para um objeto da classe base.

Descobrir para onde aponta

Regras para construtores Se você criar um construtor com argumentos e precisar de um sem argumentos, então você terá que criá-lo; (Boa prática) A primeira instrução de um construtor deve ser uma chamada a super() ou a um construtor sobrecarregado - por meio de uma chamada a this(); Se você definir um construtor e não inserir uma chamada a this() ou a super(), o compilador irá inserir automaticamente uma chamada a super(), sem argumentos; Uma chamada a super() pode incluir argumentos, que são passados ao construtor da superclasse; Um construtor não pode ser chamado a partir de um método.

PREVIEW – Interfaces Gráficas Caixas de Diálogos javax.swing -> Possui muitas classes para criar interfaces gráficas com usuário (graphical user interface – GUIs)

Ex 4 – valor 1 pt Escreva uma classe Java, Vendedor, que tenha como atributos nome completo (String), total de vendas (double) e salário (double). Para calcular o total de vendas o usuário deverá entrar com uma venda de cada vez e calcular o total. A classe deverá gerar o salário do vendedor, cada vendedor recebe R$ 600 por mês e mais 9% de suas vendas. O vendedor com mais vendas receberá um bônus de R$ 200,00, o vendedor com menos vendas deverá ser advertido. Escreva uma classe Java, VendedorTeste que solicite que entre com os dados dos vendedores da empresa (repetição controlada por sentinela), e as vendas (repetição controlada por sentinela). O programa deverá imprimir o nome, total de vendas e salário de cada vendedor, e indicar o vendedor vencedor e o qual será advertido.

Instanciar melhor_vend, pior_vend, vend do tipo Vendedor <contador_vend> = 1; Deseja inserir dados de um novo vendedor? s ou n Novo = s ou n Enquanto novo igual a s faça digite o nome do funcionario -> var nome <contador> = 1 entre com a <contador>ª venda, -1 para sair -> var venda total = total + venda <contador>++ entre com a <contador>ª venda, -1 para sair salario = 9% do total + 900 :: setNome, setTotal, setSalario de vend se <contador_vend> == 1 melhor e pior vendedor = vend senão se vend.total>melhor_vend.total imprime dados de melhor melhor = vend senão, se vend.total<pior_vend imprime dados de pior pior = vend senão imprime dados de vend <contador_vend>++

1ª Parte do Trabalho Final As equipes deverão entregar, por escrito ou impresso, a descrição do sistema que irão implementar e o diagrama de classes em UML