Programação Orientada a Objetos

Documentos relacionados
Orientação a Objetos

Programação de Computadores I. Linguagem C Função

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

Linguagem de Programação Orientada a Objeto Construtores e Sobrecarga

Programação de Computadores - I. Profª Beatriz Profº Israel

Visibilidade e Encapsulamento

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

Proporcionar a modelagem de sistemas utilizando todos os conceitos da orientação a objeto;

Para entender o conceito de objetos em programação devemos fazer uma analogia com o mundo real:

Programação Orientada a Objetos. Métodos e Atributos. Métodos. Métodos. Alexandre César Muniz de Oliveira. Parte III

Algoritmos e Programação 2. Objetos e Classes em Java. Classes. Revisão. Definições de classes incluem (geralmente):

Herança. Prof. Leonardo Barreto Campos 1

POO Fundamentos Parte III. Professor Vicente Paulo de Camargo

Introdução à UML. Prof. Jesus José de Oliveira Neto

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

1 Introdução e Conceitos básicos

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

Linguagem de Programação II Implementação

ção a Objetos em Java

E N C A P S U L A M E N T O P R O F. M E. H É L I O E S P E R I D I Ã O

Lista de Exercícios Nro. 1 Programação Orientada a Objetos - SCC204

7. Defina encapsulamento. R.: Encapsular é ocultar. Criar uma cápsula ao redor da classe, para proteger o que está dentro dela.

Estrutura de Dados Funções e Procedimentos

Dados armazenados em um objeto podem ser tanto primitivos, tais como inteiros ou caracteres, ou referências para outros objetos.

INTRODUÇÃO À PROGRAMAÇÃO II VARIÁVEIS COMPOSTAS HOMOGÊNEAS UNIDIMENSIONAIS

Programação com Objectos. Processamento de Dados I. 2. Classes, Atributos e Métodos

Programação Orientada a Objetos

3. Numerar a coluna da direita conforme a da esquerda 1) Classe (2) :Aluno 2) Um dado objeto (3) oaluno:aluno 3) Objeto (1) Aluno

COMPORTAMENTOS - Observações

Conceitos c++ Prof. Demétrios Coutinho INFORMÁTICA BÁSICA

Programação Orientada a Objetos

Classes e Objetos. Sintaxe de classe em Java

PROGRAMAÇÃO ORIENTADA A OBJETOS JAVA

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

Linguagem de Programação I Apresentação da Disciplina

PHP ORIENTADO A OBJETOS. 2º Encontro PHP MG 16 e 17 de Outubro / Charles Schaefer

Introdução a Funções

PHP-GTK. Criando Aplicações Gráficas com PHP. Pablo Dall'Oglio. Segunda Edição Inclui PHP 5 e GTK 2. Novatec

Palavras Reservadas da Linguagem Java

AULA 2 VISÃO BÁSICA DE CLASSES EM PHP

Classes e Objetos em Java. Algoritmos e Programação I. Classes. Classes. Modificadores de Acesso. Classes. Revisão

PADRONIZAÇÃO 10. INTERFACES PADRONIZAÇÃO CONTRATOS

Conceitos de Orientação a Objetos

Programação Orientada a Objetos II

Programação Orientada a Objetos. Professor Leonardo Cabral - Larback

Desenvolvimento Web TCC Turma A-1

Q d( ) P. a( ) c( ) e( ) c( ) S. c( ) d( )

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

Processo de Desenvolvimento de Software

Linguagem de Programação II Implementação

LINGUAGEM JAVA - RESUMO

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

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

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

CA: Cidade: UF CARTÃO RESPOSTA QUESTÃO RESPOSTA QUESTÃO RESPOSTA A F B G C H D I

Algoritmos e Programação : Conceitos e estruturas básicas. Hudson Victoria Diniz

Análise de Sistemas 3º Bimestre (material 2)

Unidade: Introdução à POO (Programação Orientada a Objetos)

Classe Abstrata e Interface

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

Sistemas de Objetos DistribuídosRevisão Java e Java ORBs p.1/26

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

Padrões de Projeto. Factory Method

Classes o Objetos. Classes, objetos, métodos e variáveis de instância

Estruturas de Repetição

Algoritmos e Estruturas de Dados I. Variáveis Indexadas. Pedro O.S. Vaz de Melo

Modelagem Usando Orientação à Objetos (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus

Orientação a Objetos (em Java)

TUTORIAL MATLAB Victor Breder 2016

Análise de Programação

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

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

AULA 3 Alocação dinâmica de memória: Ponteiros

SisJus Sistema de Cadastro de Processos Jurídicos. We are able to do the better Team. Setembro de 2009, Maceió AL

A programação orientada a objetos tenta simular estes aspectos, trazendo para o computador a realidade do dia-a-dia.

AULA 11 PROGRAMAÇÃO ORIENTADA A OBJETOS (INTRODUÇÃO) Disciplina: Programação Orientada a Objetos Professora: Alba Lopes

Introdução a Banco de Dados. INTRODUÇÃO

MODELAGEM VISUAL DE OBJETOS COM UML DIAGRAMA DE CLASSES.

Transcrição:

Programação Orientada a Objetos Prof. Kléber de Oliveira Andrade pdjkleber@gmail.com

Objetos e Classes

Programação Orientada ao Objeto O paradigma da Orientação ao Objeto é um mecanismo que ajuda a definir a estrutura de programas, baseado nos conceitos do mundo real, sejam eles reais ou abstratos. A Orientação ao Objeto (OO) permite criar programas componentizados, separando as partes do sistema por responsabilidades e fazendo com que essas partes se comuniquem entre sí, por meio de mensagens. Os conceitos da OO envolvem: Classes, Objetos e seus Relacionamentos, Herança, Encapsulamento e Polimorfismo. Dentre as vantagens que a OO proporciona, podemos destacar o aumento de produtividade, reuso de código, redução das linhas de código programadas, separação de responsabilidades, encapsulamento, polimorfismo, componentização, maior flexibilidade do sistema, dentre outras vantagens. 09/08/2011 Prof. Kléber de Oliveira Andrade 3

Modelagem Orientada ao Objeto Os sistemas OO podem ser modelados com auxílio da UML (Unified Modeling Language). UML é uma linguagem de modelagem para especificar, modelar, visualizar e documentar sistemas OO e não- OO, baseando-se em diagramas. A UML é composta por: Diagramas de Classes Diagramas de Sequência Diagrama de Objetos Diagrama de Caso de Uso Diagrama de Estados Outros... 09/08/2011 Prof. Kléber de Oliveira Andrade 4

Classes Uma classe, nada mais é, do que a descrição de um conjunto de entidades (reais ou abstratas) do mesmo tipo e com as mesmas caracteristicas e comportamentos. As classes definem a estrutura e o comportamento dos objetos daquele determinado tipo. Podemos dizer que as clases são, na verdade, modelos de objetos do mesmo tipo. Entidade no mundo real Propriedades: modelo cor placa Comportamento: liga desliga muda marcha acelera breca 09/08/2011 Prof. Kléber de Oliveira Andrade 5

Classes Ao lado temos o código Java da classe Carro, definida pelo modelo UML, como base no levantamento da entidade carro do mundo real. No código definimos: declaração da classe declaração dos atributos declaração dos métodos Arquivo: Carro.java O arquivo do código-fonte sempre leva o nome da classe, seguido da extensão.java 09/08/2011 Prof. Kléber de Oliveira Andrade 6

Objetos Um objeto, nada mais é do que uma instância particular de um tipo de dado específico (classes), ou seja, em outras palavras, objeto é uma entidade, do mundo computacional, que representa uma entidade do mundo real especificamente. O objeto criado fica armazenado em um área de memória chamada heap. Os objetos possuem: Estado (atributos/propriedades) Comportamento (métodos/ações) Identidade (cada objeto é único) Os objetos se comunicam entre si por meio de mensagens (chamadas aos métodos) e devem ter sua responsabilidade bem definida no sistema: Criando uma instância (objeto) de uma classe: Carro meucarro = new Carro( ); Declaração da variável que vai guardar uma referência para um objeto do tipo Carro Construtor da classe carro Operador new instância o obejto 09/08/2011 Prof. Kléber de Oliveira Andrade 7

Objetos As variáveis não guardam os objetos, mas sim uma referência para a área de memória onde os objetos estão alocados. Se criarmos duas instâncias da classe Carro e atribuírmos cada instância para cada uma das duas variáveis diferentes, c1 e c2, temos a situação ao lado. Memória Carro Carro Carro c1 = new Carro( ); Carro c2 = new Carro( ); Memória Carro Imagine, agora duas variáveis diferentes, c1 e c2, ambas referenciando o mesmo objeto. Teríamos, agora, um cenário assim: Carro c1 = new Carro( ); Carro c2 = c1; 09/08/2011 Prof. Kléber de Oliveira Andrade 8

Objetos Utilizando a classe Carro: 09/08/2011 Prof. Kléber de Oliveira Andrade 9

Package e Import Package Os pacotes (packages) servem para organizar e agrupar classes por funcionalidades. Os pacotes são divididos por uma estrutura de diretórios. 09/08/2011 Prof. Kléber de Oliveira Andrade 10

Package e Import Import O import deve ser usado para declarar que usaremos classes de outro pacote. É parecido com o include de outras linguagens, como o C/C++, por exemplo 09/08/2011 Prof. Kléber de Oliveira Andrade 11

Package e Import Import estático A partir do Java 5 é possível fazer o import estático, ou seja, dar import apenas nos métodos ou atributos estáticos oferecidos por uma classe, e usá-los como se fossem métodos e atributos locais à sua classe. 09/08/2011 Prof. Kléber de Oliveira Andrade 12

Package e Import Algo importante a se destacar é que as classes possuem um nome e um nome completo (ou fully qualified name). O nome da classe é aquele informado na definição da classe. Exemplo: public class MinhaClasse { } Neste caso o nome da classe é MinhaClasse. O nome completo da classe compreende o nome da classe mais a sua hierarquia completa de packages a qual pertence. Exemplo: package meu.pacote; public class MinhaClasse { } Neste caso o nome completo da classe é meu.pacote.minhaclasse 09/08/2011 Prof. Kléber de Oliveira Andrade 13

Garbage Collection Os objetos que não são mais referenciados, são coletados pelo Garbage Collector. O Garbage Collector libera a memória que não está mais em uso. Um objeto que perdeu sua referência é eleito a ser coletado, porém não é coletado automaticamente naquele instante. Quando um objeto se torna eletivo a Garbage Collection: // objeto criado em memória MeuObjeto obj = new MeuObjetos(); // referência perdida eleito a ser recolhido pelo G.C. obj = null; Para forçar a execução do Garbage Collector: System.gc( ); Porém nada garante que o G.C. será executado naquele instante, nem que as instâncias sem refências serão recolhidas. 09/08/2011 Prof. Kléber de Oliveira Andrade 14

Atributos Os atributos de uma classe são variáveis com o escopo do objeto. São acessíveis e estão disponíveis enquanto o objeto estiver disponível. Os atributos são iniciados durante a criação do seu objeto. Durante a criação do objeto, os atributos de: Tipos primitivos númericos recebem 0 (zero) na iniciação; Tipo char recebe o valor \u0000 ; Tipo boolean recebe false; Refeência a objetos recebem null na iniação; Porém, os atributos podem receber um valor padrão, definido na sua declaração, como no código abaixo: 09/08/2011 Prof. Kléber de Oliveira Andrade 15

Atributos Estáticos Atributos estáticos não precisam de uma instância da classe para serem usados. Eles são compartilhados por todas as instâncias da classe. Não são threads-safe (cuidado ao usá-los) 09/08/2011 Prof. Kléber de Oliveira Andrade 16

Constantes Constantes são atributos de uma classe que não mudam de valor O modificador final indica que o atributo é imutável. 09/08/2011 Prof. Kléber de Oliveira Andrade 17

Métodos A utilidade dos métodos é a de separar, em pedaços de códigos menores, uma determinada função. É aconselhavel criar e manter métodos pequenos, seguindo uma regrinha básica: Se o método tem scroll na tela, quebre-o em métodos menores. Isso facilita a leitura e o entendimento do código e a manutenção. Regras para se criar métodos: Serem bem claros e ter uma função bem definida; Serem pequenos e fáceis de entender; Serem reaproveitáveis ao máximo. 09/08/2011 Prof. Kléber de Oliveira Andrade 18

Métodos A sintaxe para a declaração dos método é a seguinte: [tipo de retorno] [nome do método] ( [lista dos atributos] ) { // implementação do método } O tipo de retorno informa qual o tipo de dados o método retorna. Pode ser um tipo primitivo ou um tipo de uma classe. Caso o método não retorne nada, ele deve ser void. O nome do método pode ser qualquer. Prefira seguir os padrões de nomeclatura e dar nomes significativos, de preferência verbos no infinitivo. A lista de atributos não precisa ser informada se não há passagem de argumentos. Caso haja, os argumentos devem ser informados com seu tipo e nome, separados por virgula se houver mais de um. 09/08/2011 Prof. Kléber de Oliveira Andrade 19

Retorno dos Métodos A palavra reservada return causa o retorno do método. Quando os métodos são declarados com o tipo de retorno void, então o método não pode e nem deve retornar nada. Os métodos que retornam algum valor, devem retornar dados do tipo de retorno declarada, ou de tipos compátiveis. Veja o exemplo: 09/08/2011 Prof. Kléber de Oliveira Andrade 20

Métodos Estáticos Métodos estáticos não precisam de uma instância da classe para serem usados. Métodos estáticos NÃO podem chamar métodos não-estáticos sem uma instância. Não são threads-safe (cuidado ao usá-los) 09/08/2011 Prof. Kléber de Oliveira Andrade 21

Construtores Contrutores não são métodos, são construtores. Eles fazem a função de iniciação (start up) do objeto criado. Se nenhum construtor for declarado, um construtor default será criado. Múltiplos construtores podem ser declarados (overloading). 09/08/2011 Prof. Kléber de Oliveira Andrade 22

Construtores Usando os diferentes construtores: 09/08/2011 Prof. Kléber de Oliveira Andrade 23

Passagem de Parâmetros Passagem de parâmetros, em java, é por valor (não tem por referência) Parametros alterados dentro de um método, não serão alterados fora dele Objeto passado como parâmetro apenas passa uma cópia da referência ao objeto Referência alteradas dentro do método, não refletem foda dele. Alteração no estado de um objeto, como um parâmetro, alteram o estado dele fora 09/08/2011 Prof. Kléber de Oliveira Andrade 24

Passagem de Parâmetros 09/08/2011 Prof. Kléber de Oliveira Andrade 25

Passagem de Parâmetros Contornando o problema de passagem por valor de tipos primitivos: Utilizar arrays (array é um objeto) 09/08/2011 Prof. Kléber de Oliveira Andrade 26

Varargs No Java 5 foi introduzido o Varargs, que permite a passagem de um número variável de argumentos a um método. Dentro do método os argumentos variáveis são tratados como arrays do tipo que foi definido. No caso dos exemplos abaixo, um array de int (int []) ou de String. Esta funcionalidade alivia o trabalho de o desenvolvedor ter que criar arrays com valores e passar aos métodos. 09/08/2011 Prof. Kléber de Oliveira Andrade 27

Modificadores de Acesso Determinam a visibilidade dos membros (atributos e métodos) da classe e da própria classe. Devem ser usados na declaração dos membros e da classe Ao todo são quatro modificadores: public, protected, default e private. public protected default private Pode ser acessado por todo mundo [modificador] class Pessoa { [modificador] String nome; [modificador] int idade; } [modificador] void ImprimirIdade() { System.out.println( idade = + idade); } Pode ser acessado por subclasses e classes do mesmo pacote Pode ser acessado por classes do mesmo pacote Pode ser acessado apenas pela própria classe 09/08/2011 Prof. Kléber de Oliveira Andrade 28

JavaBeans Os JavaBeans são componentes Java (classes) bem encapsuladas e com um propósito específico. Seus atributos não podem ser acessados direamente, mas apenas por meio de métodos set e get. Segundo o encapsulamento, os atributos não podem ser alterados diretamente. 09/08/2011 Prof. Kléber de Oliveira Andrade 29

Arrays Array é uma coleção ordenada de primitivos, referências para objetos e outras arrays. Os arrays em Java são homogêneos, ou seja, eles só podem conter dados do mesmo tipo. Os arrays são objetos, e devem ser construidos antes de serem usados. Os arrays são iniciados automaticamente quando criados. Passos para utilizar arrays: Declaração Criação Iniciação 09/08/2011 Prof. Kléber de Oliveira Andrade 30

Arrays Podemos percorrer os array de forma automática, usando o laço for(). O índice dos arrays vai de 0 (Zero) até N-1 (onde N é o tamanho do array) Os arrays não mudam de tamanho. Acesssar um índice inexistente causa uma exceção: ArrayOutOfBoundsException 09/08/2011 Prof. Kléber de Oliveira Andrade 31

Exercícios Crie um modelo de cozinha, seguindo estas orientações: Crie três classes que representam utilitários de cozinha (Liquidificador, Microondas e Geladeira), todos contendo métodos para ligar e desligar o aparelho. Ao chamar o método imprima o que aconteceu com o aparelho. Crie uma classe chamada cozinha. Dentro da Cozinha, inclua um atributo para cada utilitário criado. Crie um método da cozinha para ligar/desligar todos os aparelhos. 09/08/2011 Prof. Kléber de Oliveira Andrade 32

09/08/2011 Prof. Kléber de Oliveira Andrade 33