Linguagem de programação Programação Orientada a objetos

Documentos relacionados
1 Introdução e Conceitos básicos

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Interfaces. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.

Programação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes -

POO29004 Programação Orientada a Objetos

9 Classes Abstractas e Interfaces

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

Classe Abstrata e Interface

Linguagem de Programação II Herança

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS

Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }

Java para Desktop. Programação Orientada à Objetos 2 JSE

Linguagem de Programação II Programação Orientada a Objetos. Orientação a Objetos

Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento

Conceitos de Programação Orientada a Objetos

Desenvolvimento Web TCC Turma A-1

Interfaces e Classes Abstratas

Herança e Polimorfismo

Programação para Games II. Professor Ariel da Silva Dias Orientação a Objetos

Introdução. Programação Orientada a Objetos (POO) João Paulo Q. dos Santos

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces

Encapsulamento e Métodos (Construtores e Estáticos) João Paulo Q. dos Santos

Linguagem de Programação III

Programação Orientada a Objetos Flávio de Oliveira Silva 144

Classes e Objetos. Sintaxe de classe em Java

COMPORTAMENTOS - Observações

POO29004 Programação Orientada a Objetos

Unidade: Classes Abstratas, Polimorfismo, Sobreposição e Interfaces

Linguagens de Programação Aula 12

Tema da aula Introdução ao paradigma de programação: Orientado a Objetos

Vejamos o seguinte exemplo public class Exemplo private int testada = 20; public void testapalavra(int testada) JOptionPane.showMessageDialog(null,"Pa

AULA 8 Polimorfismo de: coerção, overloading, inclusão e paramétrico Prof. Dr. Fernando Henrique Campos

LÓGICA DE PROGRAMAÇÃO (JAVA) HERANÇA. Professor Carlos Muniz

Conceitos de Programação Orientada a Objetos

Introdução à orientação a objetos. João Tito Almeida Vianna 18/05/2013

Conceitos de Programação Orientada a Objetos

Aula 4 Encapsulamento e Relacionamento Cleverton Hentz

Programação por Objectos. Java

POO29004 Programação Orientada a Objetos

Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli

Linguagem de Programação II Implementação

TÉCNICAS DE ORIENTAÇÃO A OBJETOS

Introdução ao Java. Prof. Herbert Rausch Fernandes

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs

Computação II - Java - Teste 1.2 Prof. Adriano Joaquim de Oliveira Cruz 2015/04/27

Aula 10 POO 1 Classes Abstratas. Profa. Elaine Faria UFU

Programação Java. - Herança e Polimorfismo - Marco Fagundes Marco Fagundes -

Laboratório de programação II

Linguagem de Programação. Diagrama de classes

Herança e Propriedades

LISTA DE EXERCÍCIO 7 Interfaces

Orientação a objetos. Programação. Orientada a Objetos. Orientação a objetos. Orientação a objetos. Abstração e encapsulamento

Aula 7 POO 1 Herança. Profa. Elaine Faria UFU

Classes e Objetos INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II. Classes. Objetos. Um modelo para a criação de objetos

Modelo do Mundo Real. Abstração. Interpretação

Módulo 5. Programação Orientada a Objetos. Programação Orientada a Objetos I Java (Rone Ilídio)

Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto

Programação Orientada a Objetos

POO UML e Outros Conceitos. Prof. Vicente Paulo de Camargo

Sabemos que a classe é responsável por definir a estrutura e o comportamento de seus objetos. Portanto, os objetos são instâncias das classes.

Programação Orientada a Objetos JAVA - NETBEANS

Programação Estruturada e Orientada a Objetos. Objetos e Métodos

Linguagem de Programação II Implementação

Programação Orientada a Objetos 2 Flávio de Oliveira Silva, M.Sc.

[Linguagem de Programação 3] [Aula 01] [Gustavo Yoshio Maruyama]

Programação Java (nível intermediário) 4. Polimorfismo

Unidade: sobrecarga, construtores e herança

Fundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus

Computação II Orientação a Objetos

Engenharia de Software. Aula 10 Representação dos Conceitos de Orientação a Objetos. Prof. Me. Rogério Ferreira

Aula 15 Modelagem de Classes de Análise. Análise de Sistemas Prof. Filipe Arantes Fernandes

Compiladores Análise Semântica

Programação. Orientada a Objetos: Herança. Objetos. Relacionamento entre classes. Análise e Projeto Orientados a. Objetos

Orientação a Objetos - Herança

Polimorfismo e Ligação Dinâmica. Alcides Pamplona Polimorfismo e Ligação Dinâmica

Introdução à Programação Orientada a Objetos em C++

Linguagem de Programação III

CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO

Sobrecarga, Sobreposição e Polimorfismo

Transcrição:

Instituto Federal de Minas Gerais Campus Ponte Nova Linguagem de programação Programação Orientada a objetos Professor: Saulo Henrique Cabral Silva

Paradigma da orientação a objetos Paradigma = forma de abordar um problema. Paradigma orientado a objetos??? O paradigma de orientação a objetos foi formulado já há alguns bons anos atrás. analogia biológica Sistema deve funcionar como um ser vivo. 2

Paradigma da orientação a objetos (5 mandamentos) Qualquer coisa é um objeto. Objetos realizam tarefas através da requisição de serviços a outros objetos para realizar uma determinada tarefa. Cada objeto pertence a uma determinada classe. Uma classe agrupa objetos similares. A classe é um repositório para comportamento associado ao objeto. Classes são organizadas em hierarquias. 3

Resumindo o que vamos aprender... 4

CLASSES 5

Classes e objetos O mundo real é formado de coisas (pessoa, quadro, computador, fornecedor, animal...). Toda coisa do mundo real é chamada de objeto na modelagem orientada a objetos. Nos seres humanos ainda costumamos agrupar os objetos. Esse processo de agrupar coisas reduz a complexidade de interpretar e abstrair tantas opções que existem atualmente. Ex: é muito mais fácil se lembrar o que é um cavalo (ideia/molde). Uma classe é a ideia geral (é o molde). A classe: Contem a descrição dos atributos e serviços(ações) comuns a um grupo de objetos. Dizemos que um objeto é uma instancia de uma classe. 6

Contextualizando Vem a mente um objeto (animal): 4 patas Crina Cauda... É importante sempre lembrar que uma classe é uma representação abstrata de coisas do mundo real. Coisas do mundo real são muito complexas para que todas as suas características sejam representadas em uma classe. Para cada problema posso ter atributos mais ou menos relevantes... 7

Declarando uma Classe em Java public class Cavalo { //atributos //construtores //encapsulamento //comportamento 8

ATRIBUTOS 9

Atributos Cor Altura Peso Número de dentes Quantidade de patas 10

Atributos de uma Classe em Java public class Cavalo { //atributos //construtores //encapsulamento //comportamento 11

Atributos de uma Classe em Java public class Cavalo { private String cor; private int idade; private double peso; private int numpatas; private String raca; //construtores //encapsulamento //comportamento 12

CONSTRUTORES 13

Construtores São os responsáveis por duas funções essenciais dentro da programação orientada a objetos: Constroem (instanciam) os objetos, que são instâncias das classes. Inicializam todos os atributos. Temos aqui um cuidado especial com atributos que também possam ter a necessidade de serem inicializados através de outro construtor... Construtores que veremos frequentemente de agora em diante... default Variáveis 14

Construtores código public class Cavalo { private String cor; private int idade; private double peso; private String numpatas; private String raca; public Cavalo() { h Peso public Cavalo( String cor_, int idade_ ) { this.cor = cor_; this.idade = idade_; 15

Objetos Um objeto é a instância de uma classe. Um objeto possui um espaço de memória... A classe é a fôrma e o objeto é o produto dessa fôrma. Como criar um objeto? Chame os construtores. Classe Objeto 16

Criação de objetos public static void main (String [] args) { Cavalo c1 = new Cavalo(); Cavalo c2 = new Cavalo( preto,12); Cavalo c3 = new Cavalo( Cinza,9); 17

Métodos 18

19

Análise do estudo de caso... (Métodos/ações) Os pedais ocultam as complexidades do funcionamento do motorista: O pedal do acelerador oculta toda a complexidade para aumentar a velocidade do carro. O pedal do freio oculta a complexidade para diminuir a velocidade do carro. O volante oculta a complexidade dos mecanismos para mudar a direção do carro. 20

Encapsulamento O objetivo aqui é isolar a classe, e controlar acessos à mesma. Boa prática de programação em deixar os atributos de uma classe restritos a ela. Dizemos que ocultamos os tributos da classe. Para acessar os atributos de uma classe utiliza-se os métodos get e set. Classe Set s var1 var2 var3 Get s 21

Métodos Set s Get s public class Cavalo { private String cor; private int idade; public void setcor (String cor_){ this.cor = cor_; public String getcor ( ){ return this.cor; public void setidade ( int idade_){ this.idade = idade_;

Métodos específicos / habilidades São métodos que denotam um comportamento/habilidade de cada Classe. A implementação destes métodos segue a mesma sintaxe especificada na aula referente a métodos. Métodos de classe possuem acesso aos atributos das mesmas. Acesso Modificação de valor 23

Codificando métodos de classes public class Cavalo { //... variáveis //... construtores public void correr( ){ //... // faça algo... //... 24

Chamando - usando as habilidades de cada Objeto public static void main (String [] args) { Cavalo c1 = new Cavalo(); Cavalo c2 = new Cavalo( preto,12); Cavalo c3 = new Cavalo( Cinza,9); c1.correr(); c2.correr(); 25

Comecemos com um estudo de caso... Implemente um sistema para um supermercado no qual: Você vai receber do cliente um arquivo em que o mesmo contêm a especificação com o código, nome e preço de todos os produtos que são ofertados pelo supermercado. O programa deve receber todos os produtos que o usuário comprou. Deve realizar a soma dessa compra. A lista de produtos comprados pelo cliente deve ser apresentada logo após o somatório do preço de todos os produtos. A opção de remover um item ou acrescentar um novo a lista deve estar disponível. Após passar todos os valores, o sistema deve calcular o troco, com base no valor que o cliente repassou para o caixa. 26

HERANÇA 27

Herança Herança é uma forma de reutilização de software em que uma nova classe é criada absorvendo membros de uma classe. Estamos em busca do aprimoramento, novas capacidades ou modificadas. Com isso ganhamos: Tempo; E reuso de código testado; Ao criar uma classe, em vez de declarar membros completamente novos, podemos herdar membros de uma classe já existente. 28

Herança - código public class Animal { private String nome; private double altura; public Animal ( ){ public Animal (String nome_, double altura_){ this.nome = nome_; this.altura = altura_; 29

Herança - código public class Cavalo extends Animal{ private String cor; private int idade; private double peso; private String numpatas; private String raca; public Cavalo() { super( ); public Cavalo(String cor_, int idade_,string nome_,string alt_ ) { super( nome_, alt_); this.cor = cor_; this.idade = idade_;... 30

POLIMORFISMO 31

Polimorfismo O polimorfismo permite escrever programas que processam objetos que compartilham uma mesma classe. Com o polimorfismo podemos projetar e implementar sistemas que são facilmente extensíveis. Novas classes podem ser adicionadas com pouca ou nenhuma modificação. As únicas partes de um programa que devem ser alteradas para acomodar as novas classes são aquelas que exigem conhecimento direto das mesmas que acabaram de ser adicionadas a hierarquia. 1 m 3 m 10 m 32

Polimorfismo - código Implementamos o método mover na super classe Animal. Sobrescrevemos esse método (mover) em cada uma das subclasses (especializações). O ato de: sobrescrever é o polimorfismo. Vector <Animal> animais = new Vector <Animal> ( ); //adição de alguns animais nesse vetor dinâmico (subclasses) for ( int i = 0 ; i < animais.size(); i++ ){ animais.get(i).correr(); 33

CLASSES ENUMERATES (ENUM) 34

Classes Enumerates É um tipo especial de classe que é introduzida pela palavra-chave ENUM. Essa classe especial, contém uma lista de constantes de enumeração separadas por vírgula. Cada identificador em uma classe ENUM deve ser único. As instâncias ( Objetos ) dos tipos enum são criadas e nomeadas junto com a declaração da classe, sendo fixas e imutáveis Não é permitido criar novas instâncias com a palavra new. Construtor private As instâncias são declaradas todas com letras MAISCULAS; 35

Exemplo Classes Enumerates public enum DiaSemana { DOMINGO(0), SEGUNDA(1), TERCA(2), QUARTA(3), QUINTA(4), SEXTA(5), SABADO(6); private valordia; private DiaSemana( int valor) { this.valordia = valor; public void getvalordia() { return this.valordia; 36

CLASSES ABSTRATAS 37

Classes abstratas (interfaces) Fornecer uma superclasse apropriada a partir da qual outras classes podem herdar e assim podem compartilhar um design comum. Uma classe abstrata não pode produzir instâncias de objetos. Classes concretas (não abstratas) podem. Uma classe abstrata é como o design de alguma construção... O que essa construção precisa contemplar... 38

Classes abstratas - código public abstract class Tv { public abstract void aumentarvolume ( ); public abstract void abaixarvolume ( ); public abstract String retornafabricante ( ){... public class TvPanasonic extends Tv { //obrigatório implementar todos os métodos abstratos da classe abstrata 39

Interfaces - código public interface Tv { public void aumentarvolume ( ); public void abaixarvolume ( ); public String retornafabricante ( ); public class TvPanasonic implements Tv { //obrigatório implementar todos os métodos da interface 40