Programação Avançada



Documentos relacionados
Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais

Programação Orientada a Objetos em Java

Capítulo 4. Packages e interfaces

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento Eclipse Introdução à Linguagem de Programação JAVA

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento NetBeans Introdução à Linguagem de Programação JAVA

Java. Marcio de Carvalho Victorino

PROGRAMAÇÃO JAVA. Parte 1

Introdução à Programação. Adair Santa Catarina Curso de Ciência da Computação Unioeste Campus de Cascavel PR

Implementando uma Classe e Criando Objetos a partir dela

Análise e Projeto Orientados por Objetos

Técnicas de Programação II

Orientação a Objetos com Java

Programação por Objectos. Java

Desenvolvimento Web TCC Turma A-1

CURSO DE PROGRAMAÇÃO EM JAVA

Técnicas de Programação Avançada TCC Profs.: Anselmo Montenegro Conteúdo: Introdução à Orientação a Objetos

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos

Programação de Computadores II TCC Turma A-1

Linguagens de. Aula 02. Profa Cristiane Koehler

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP

Keeper of Knowledge. Capítulo 2 Classes em Java

Universidade da Beira Interior Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática

Métodos de Construção de Software: Orientação a Objetos. Mestrado em Ciência da Computação 2008 Profa. Itana Gimenes

Um pouco do Java. Prof. Eduardo

Curso de PHP. FATEC - Jundiaí. A programação orientada a objetos (object-oriented oriented programming

Objetos Distribuídos - Programação Distribuída Orientado a Objetos. Luiz Affonso Guedes

Introdução à Linguagem Java

Módulo 07 Características Avançadas de Classes

Objetivos: Sun recomenda que utilize o nome de domínio da Internet da empresa, para garantir um nome de pacote único

FBV - Linguagem de Programação II. Um pouco sobre Java

Orientação a Objetos em Java. Leonardo Gresta Paulino Murta leomurta@ic.uff.br

Aspectos técnicos do desenvolvimento baseado em componentes

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

Aula 09 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Prof. Esp. Adriano Carvalho

Paradigmas da Programação PPROG. Linguagem JAVA. Interfaces. (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33

Java TM e o Modelo de Objetos

Curso de Eng. Informática Linguagens de Programação. C Sharp University Data Processing. (C Sharp Universidade de Processamento de Dados) Docente:

Java - Introdução. Professor: Vilson Heck Junior. vilson.junior@ifsc.edu.br

Linguagem de Programação Orientada a Objeto. Introdução a Orientação a Objetos Professora Sheila Cáceres

Capítulo 3. Programação por objectos em Java

Capítulo 8. Software de Sistema

1. Apresentação Objetivos

UML Aspectos de projetos em Diagramas de classes

Capítulo 8. Introdução UML

Programação por Objectos. Java

Módulo 02 Programação Orientada a Objetos. Última atualização: 07/06/2010

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 2. Cursos de Computação

Orientação à Objetos. Aécio Costa

Orientação a Objetos com Java

Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões

UML Unified Modeling Language

3 Classes e instanciação de objectos (em Java)

Análise de Programação

Aula 2. Objetivos Conceitos; Instalação do Text Pad; Entendendo o código java do AloMundo1 Codificação do AloMundo2,AloMundo3 e AloMundo4.

LINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO. Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto

Diagrama de Classes. Um diagrama de classes descreve a visão estática do sistema em termos de classes e relacionamentos entre as classes.

Guião de Introdução ao Eclipse IDE Índice

Influenciam nossa percepção; ajudam-nos a organizar e a coordenar a Classes estimulam projeto centrado em dados:

Profº. Enrique Pimentel Leite de Oliveira

Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI PCO203 Tópicos Especiais em Programação

Reuso com Herança a e Composiçã

Java 2 Standard Edition Como criar classes e objetos

OOP - Java. Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora

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

Classes Abstratas e Interfaces

Programação com Objectos. Processamento de Dados I. 4. Classes Abstractas

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Sobre o Professor Dr. Sylvio Barbon Junior

Professor: Douglas Sousa Cursos de Computação

Noções sobre Objetos e Classes

Programação Orientada a Objetos e Java - Introdução. Carlos Lopes

8 Classes Internas. Desenvolvimento OO com Java. Vítor E. Silva Souza

Introdução a Java. Hélder Nunes

Programação Orientada a Objetos C++

Java Laboratório Aula 1. Divisões da Plataforma. Introdução a Plataforma Java. Visão geral da arquitetura da

Orientação a Objetos

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

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS

Prototype, um Design Patterns de Criação

Herança. Alberto Costa Neto DComp - UFS

2 Orientação a objetos na prática

Linguagem de Programação Introdução a Linguagem Java

Classes Abstratas e Interfaces

7 RTTI e Interfaces. Desenvolvimento OO com Java. Vítor E. Silva Souza (vitorsouza@inf.ufes.br)

Chamadas Remotas de Procedimentos (RPC) O Conceito de Procedimentos. RPC: Programa Distribuído. RPC: Modelo de Execução

Programação Orientada a Objetos

Programação Orientada por Objetos

ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA X

Interface Homem Máquina para Domótica baseado em tecnologias Web

Polimorfismo. Prof. Leonardo Barreto Campos 1

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Linguagem de Programação III

Fundamentos de Java. Prof. Marcelo Cohen. 1. Histórico

A tecnologia Java refere-se a ambas: a linguagem de programação e a plataforma.

Computação II Orientação a Objetos

Comandos de repetição For (inicialização; condição de execução; incremento/decremento) { //Código }

Transcrição:

Índice 1.1 - Introdução História A plataforma Java 1.2 - Conceitos Fundamentais na programação por objectos Objectos Encapsulamento Classes Herança Polimorfismo Interfaces Pacotes 1/24

1.1 Introdução 1.1 - Introdução História A plataforma Java 1.2 -- Conceitos Fundamentais na programação por objectos Objectos Encapsulamento Classes Heran Herançça a Polimorfismo Interfaces Pacotes 2/24

1.1 Introdução Programação Avançada Introdução: Programação procedimental (exemplo C, pascal, fortran ) Programas simples, usando tipos primitivos, estruturas de controlo, rotinas,. -A modularização é fundamentalmente realizada em: -Funções -Procedimentos A especificação dos dados e operações realizadas sobre esses dados são separadas: -Requer o envio de dados para os procedimentos e funções (através de argumentos) 3/24

1.1 Introdução Programação Avançada Introdução: Programação Orientada por Objectos (exemplo Java, C++, ) Aumenta os mecanismos de abstracção da linguagem procedimental -Providencia maior flexibilidade, modularidade, clareza, reutilização e robustez. Dados e operações sobre esses dados são modularizados dentro de uma única entidade: classe. -Assunção: No mundo em que vivemos tudo são objectos. Os programas descrevem esse mundo. -Objectos têm determinado estado e comportamento. -Implica que organizemos a nossa visão do mundo e/ou de um problema em termos de objectos, seu estado e comportamento. 4/24

1.1 Introdução Programação Avançada História História: [Anos 60] Simula-67, Dahl e Nygaard da Universidade de Oslo -Primeira linguagem com conceitos OO [Anos 70] Smalltalk da Xerox -Primeira implementação prática de uma linguagem OO [Anos 80] C++ do Bell Labs -Extenção do C, com conceitos OO -Popularizou a metodologia de programação OO [Anos 90] Java, James Gosling da Sun Microsystems -Sintaxe próxima do C -Programas executados numa máquina virtual. Este facto permite portabilidade, mas torna o Java muito lento (50 vezes pior que o C) [Anos 00] C # (C Sharp) da Microsoft -Derivado do Java para a plataforma.net http://java.sun.com/docs/white/langenv/ 5/24

1.1 Introdução Programação Avançada A Plataforma Java A plataforma Java: O Java é uma linguagem orientada por objectos que se diferencia pela portabilidade. -O Java é independente da plataforma de Hardware -O Java é independente do sistema operativo Os programas Java são escritos em ficheiros de texto e compilados numa linguagem chamada: -Java ByteCodes -Os ByteCodes não contêm código para o processador nativo de um sistema. Em vez disso são interpretados por uma entidade Java Virtual Machine que corre os programas Java Código Fonte ByteCodes Solaris, Windows, Linux, MAC OS, etc 6/24

1.1 Introdução Programação Avançada A plataforma Java: A plataforma JAVA tem dois componentes e é inteiramente composta por software: -A Java Virtual Machine (JVM) -A Java Aplication programming interface (API) A API é uma enorme colecção de componentes de software previamente desenvolvidos que providenciam muitas funcionalidades. Esta colecção está agrupada em bibliotecas de classes e interfaces chamadas pacotes. 7/24

1.1 Introdução Programação Avançada A plataforma Java: Compilar e executar um programa: 8/24

1.2 Conceitos Fundamentais em OOP 1.1 -- Introdução Hist História A A plataforma Java 1.2 - Conceitos Fundamentais na programação por objectos Objectos Encapsulamento Classes Herança Polimorfismo Interfaces Pacotes 9/24

Objectos Objectivo: Transportar a vida real para a programação Objecto: -Algo que existe na vida real que partilham 2 caracteristicas: Estado e Comportamento. -Em OOP, os objectos de software armazenam o estado em campos (variáves noutras linguagens). -Os objectos expõem o seu comportamento através de métodos (funções noutras linguagens). -Os métodos operam no estado interno do objecto. São o mecanismo primário de comunicação entre objectos. Ou por outras palavras são o interface do objecto Exemplos de Objectos, campos e métodos: Objecto : Cão Campos (estado): Nome, Raça, Cor, etc. Métodos (comportamento): Buscar, Abanar cauda, etc. Objecto : Bicicleta Campos (estado): Mudança, Velocidade,etc. Métodos (Comportamento): AlteraMudança,etc. Especificar um sistema consiste em definir um conjunto de objectos 10/24

Encapsulamento Encapsulamento: Exemplo: -Os dados e métodos associados a um objecto são encapsulados (colocados numa cápsula) de modo a que apenas parte do conteúdo seja acessível. -O encapsulamento providencia uma forma de interagir com o objecto, mas omite os detalhes de como o objecto trabalha. -Encapsular é muitas vezes denominado ocultar informação (information hiding). -Uma bicicleta é constituida por muitas peças e partes e é capaz de efectuar várias acções -Conhecer os pedais, manipulos de travão, manipulação do guiador é importante para o ciclista -Conhecer o funcionamento da transmissão e sistema de travagem não é importante para o motorista. O encapsulamento é um principio fundamental da programação orientada a objectos 11/24

Classes: Exemplo: Programação Avançada Classes -Os objectos similares, do mesmo tipo são agrupados em classes. -Na realidade, em programação OO temos que especificar as classes e não os objectos. Os objectos surgem como instâncias das classes. -Especificamos a classe bicicleta como possível implementação de uma bicicleta. -Admitimos que essa bicicleta possa ter várias instâncias. O sistema assim construído consiste numa comunidade de objectos (instâncias de classes) que interagem uns com os outros (através de chamadas a métodos). Os objectos da comunidade evoluem independentemente uns dos outros 12/24

class Bicycle { int cadence = 0; int speed = 0; int gear = 1; Programação Avançada Exemplo de implementação da classe bicicleta em JAVA Expecificação da classe (template) void changecadence(int newvalue) { cadence = newvalue; void changegear(int newvalue) { gear = newvalue; void speedup(int increment) { speed = speed + increment; void applybrakes(int decrement) { speed = speed - decrement; void printstates() { System.out.println("cadence:"+cadence+" speed:"+speed+" gear:"+gear); Delimitadores da classe 13/24

class Bicycle { int cadence = 0; int speed = 0; int gear = 1; Programação Avançada Exemplo de implementação da classe bicicleta em JAVA Expecificação da classe (template) Campos: representam o estado do objecto void changecadence(int newvalue) { cadence = newvalue; void changegear(int newvalue) { gear = newvalue; void speedup(int increment) { speed = speed + increment; void applybrakes(int decrement) { speed = speed - decrement; void printstates() { System.out.println("cadence:"+cadence+" speed:"+speed+" gear:"+gear); 14/24

Exemplo de implementação da classe bicicleta em JAVA class Bicycle { int cadence = 0; int speed = 0; int gear = 1; Expecificação da classe (template) void changecadence(int newvalue) { cadence = newvalue; void changegear(int newvalue) { gear = newvalue; void speedup(int increment) { speed = speed + increment; void applybrakes(int decrement) { speed = speed - decrement; void printstates() { System.out.println("cadence:"+cadence+" speed:"+speed+" gear:"+gear); Métodos: definem como interage com o mundo exterior 15/24

Exemplo de implementação da classe bicicleta em JAVA - A responsabilidade de criação dos objectos está noutra classe definida na nossa aplicação. Essa classe principal deverá conter obrigatoriamente o método main(). class BicycleDemo { public static void main(string[] args) { Bicycle bike1 = new Bicycle(); Bicycle bike2 = new Bicycle(); Cria dois objectos bicicleta distintos bike1.changecadence(50); bike1.speedup(10); bike1.changegear(2); bike1.printstates(); Invoca métodos no objecto criado bike1 bike2.changecadence(50); bike2.speedup(10); bike2.changegear(2); bike2.changecadence(40); bike2.speedup(10); bike2.changegear(3); bike2.printstates(); Invoca métodos no objecto criado bike2 cadence:50 speed:10 gear:2 cadence:40 speed:20 gear:3 Output do programa 16/24

Herança Herança: -Mecanismo que promove a reutilização da classe. -Permite que uma classe herde o estado (campos) e comportamento (métodos) de outra classe Exemplo: Superclasse Subclasses -A classe Bycicle torna-se agora a superclasse de MontainBike, RoadBike e TandemBike -As classes MontainBike, RoadBike e TandemBike são subclasses da superclasse Bycicle Definição de subclasses: (Bicicleta Dupla) class MountainBike extends Bicycle { // Colocar aqui novos campos e métodos que definam a MountainBike 17/24

Polimorfismo: Programação Avançada Polimorfismo - O polimorfismo corre quando há uma redefinição, ou múltipla definição, de métodos da superclasse nas subclasses com a mesma assinatura. - Esta característica permite que uma mesma variável (campo) se refira a objectos de classe diferentes, desde que sejam derivadas da declarada. Permite também que uma operação tenha diferentes implementações O Polimorfismo é implementado através de ligações dinâmicas (operações polifórmicas) - Só durante a execução do programa é que se sabe qual o método que é executado, pois este depende da classe do objecto e não da referência (superclasse). Razões para que uma operação não seja polifórmica. Isto é que seja final: - O programador entente que subclasses não devem fornecer métodos especializados como imlementação dessa operação. -Como recorre a ligação dinâmica é menos eficiente que operações não polifórmicas 18/24

Polimorfismo - exemplo: Mesmos métodos Pai public class Pai { public String nome() { return Pai ; superclasse Superclasse (mais geral) public class Filho extends Pai { public String nome() { return Filho ; subclasse Subclasse Filho public void mostra() { Pai pai = (Pai)this; System.out.println( this.nome() = + this.nome()); System.out.println( pai.nome() = + pai.nome()); System.out.println( super.nome() = + super.nome()); Output do programa this.nome() = Filho pai.nome() = Filho super.nome() = Pai 19/24

Interfaces Interfaces: Exemplo: -Como referido, os métodos de uma classe formam o seu interface com o mundo exterior. -A implementação do interface permite uma formalização do comportamento que promete providenciar -Um interface é um conjunto de protótipos de métodos (sem implementações) que especifica um serviço bem definido. O interface pode herdar definições de outra interface, mas não pode ser instanciado. -O comportamento da bicicleta se for especificado como um interface fica assim: interface Bicycle { void changecadence(int newvalue); void changegear(int newvalue); void speedup(int increment); void applybrakes(int decrement); -A implementação duma interface é realizada pela classe concreta através da keyword implements class ACMEBicycle implements Bicycle { // restante da classe implementado como anteriormente 20/24

Packages Pacotes (Packages): Exemplo: -Agrupam classes e interfaces relacionadas num mesmo pacote que depois pode ser disponibilizado num ficheiro.jar, juntamente com o MANIFEST.MF a descrever o pacote. -Criam um espaço de nomes que evita conflitos entre tipos definidos fora do pacote - O nome de um pacote indica a estrutura de directorias onde as classes estão posicionadas -Um pacote deve estar posicionado numa directoria com o mesmo nome -Os ficheiros relativos á classe pública Bycicle pertencente ao pacote veiculos.velocipedes devem estar posicionados em: $CLASSPATH\veiculos\velocipedes\Bycicle.java (Código fonte para compilação) $CLASSPATH\veiculos\velocipedes\Bycicle.class (Código bytecodes para execussão) 21/24

Pacotes (Packages). Exemplo: Em pt\ensino\aulas\nota.java package pt.ensino.aulas; class Nota { Criação do Pacote Em pt\musica\composicao\nota.java package pt.musica.composicao; class Nota { private Aluno lista[]; private Nota nota[]; Nomes iguais, mas classes diferentes. Espaço de nomes diferentes Utilização do pacote Usar pt\ensino\aulas\nota.java: import pt.ensino.aulas.nota; Nota Aulas = new Nota(); Utilização do Pacote Usar \pt\musica\composicao\*.java import pt.musica.composicao.*; Nota musica = new Nota(); 22/24

Pacotes (Packages): Exemplo: -A plataforma JAVA providencia uma enorme quantidade de bibliotecas de classes (conjunto de pacotes), que podem ser utilizados pelos programadores -A biblioteca de pacotes é denominada Aplication Programming Interface ou API e inclui classes para implementação das tarefas mais comuns em programação. -O objecto String contêm o estado e comportamento de conjuntos de caracteres. -O Objectio File permite que o programador manipule um ficheiro no filesystem -Etc. A especificação completa da API de JAVA contêm a informação completa para os pacotes, classes, campos e métodos disponibilizados pela plataforma Java 6 Standard Edition. Encontra-se online em: http://java.sun.com/javase/6/docs/api/index.html 23/24

FIM 24/24