Programação Orientada a Objetos



Documentos relacionados
Programação Orientada a Objetos

A Linguagem Algorítmica Estrutura de Repetição. Ex. 2

Orientação a Objetos com Java

Programação Orientada a Objetos (DPADF 0063)

PROGRAMAÇÃO ORIENTADA A OBJETOS EM JAVA*

Introdução à Linguagem Java

Profº. Enrique Pimentel Leite de Oliveira

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

Capítulo 1. Introdução ao Java. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Programação Orientada a Objetos

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

Desenvolvimento Web TCC Turma A-1

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

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

Linguagens de. Aula 02. Profa Cristiane Koehler

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

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

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas

2 Diagrama de Caso de Uso

Lógica de Programação

Java & OpenJDK. Thiago S. Gonzaga. Sun Campus Ambassador thiago.gonzaga@sun.com

Prof. Esp. Adriano Carvalho

Linguagem Java. Arquitetura e Ambiente de Desenvolvimento. Arquitetura e Ambiente de Desenvolvimento Prof. Anderson Augustinho Uniandrade

1. Apresentação Objetivos

Java. Marcio de Carvalho Victorino

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

CURSO DE PROGRAMAÇÃO EM JAVA

Introdução. à Linguagem JAVA. Prof. Dr. Jesus, Edison O. Instituto de Matemática e Computação. Laboratório de Visão Computacional

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

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

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

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

Orientação a Objetos

Programação Orientada a Objetos

Orientação a Objetos com Java

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

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

UML - Unified Modeling Language

Análise e Projeto Orientados por Objetos

O que é a UML? Introdução a UML. Objetivos da Modelagem. Modelos. A UML não é. Princípios da Modelagem. O que é um modelo?

Análise e Projeto Orientados por Objetos

Engenharia de Software III

Objetivos do Curso. Você será capaz de:

UML 01. Curso Superior de Tecnologia em Banco de Dados Disciplina: Projeto de Banco de Dados Relacional 1 Prof.: Fernando Hadad Zaidan

Introdução a Java. Hélder Nunes

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

Notas de Aula 04: Casos de uso de um sistema

Orientação à Objetos. Aécio Costa

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

Organização e Arquitetura de Computadores I. de Computadores

Histórico da Revisão. Versão Descrição Autor. 1.0 Versão Inicial

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Especificação do 3º Trabalho

PROGRAMAÇÃO JAVA. Parte 1

Programação Orientada a Objetos em Java

Qualidade de Software

3.1 Definições Uma classe é a descrição de um tipo de objeto.

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

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

Roteiro do Programa e Entrada/Saída

Sistemas para internet e software livre

Um pouco do Java. Prof. Eduardo

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

Engenharia de Requisitos Estudo de Caso

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Programação de Computadores II: Java. / NT Editora. -- Brasília: p. : il. ; 21,0 X 29,7 cm.

Modelos de Sistema by Pearson Education. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 8 Slide 1.

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

Aspectos de Segurança em Programação com Java

Java para Desktop. Introdução à Plataforma Java JSE

EMENTA DO CURSO. Tópicos:

Curso de Aprendizado Industrial Desenvolvedor WEB

Introdução à Linguagem Java. Departamento de Informática Prof. Anselmo C. de Paiva

Orientação a Objeto e UML Questões 2014 Prof. Felipe Leite

Java Básico. Aula 1 por Thalles Cezar

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

Feature-Driven Development

Informática I. Aula 6. Aula 6-12/09/2007 1

Programação Orientada a Objeto

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

UML Unified Modeling Language

Instalando o J2SE 5.0 JDK no Windows 2000/XP

Modelagem OO com UML. Vítor E. Silva Souza ~ vitorsouza

UNIVERSIDADE DO ESTADO DE SANTA CATARINA - UDESC DCC Departamento de Ciência da Computação Joinville-SC

Wilson Moraes Góes. Novatec

Sistemas Operacionais

Tópicos em Engenharia de Computação

ANÁLISE E PROJETO ORIENTADO A OBJETOS. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com

LINGUAGEM ORIENTADA A OBJETOS

Conceitos de Banco de Dados

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

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição

Gerenciador de Log Documento Visão. Versão 2.0

Unisant Anna Gestão Empresarial com ERP 2014 Modelagem de Sistemas - UML e MER

Computação II Orientação a Objetos

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

PROGRAMANDO EM C# ORIENTADO A OBJETOS

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto

Minicurso introdutório de desenvolvimento para dispositivos Android. Cristiano Costa

Transcrição:

Programação Orientada a Objetos Aulas 01-05 Prof. Adilson G. Damasceno Este material não substitui o livro texto, as referências recomendadas e nem as aulas expositivas. 02/10/2014 Aula 01 1

Paradigmas de desenvolvimento O que é um paradigma? Um exemplo, um modelo, um padrão; Um conjunto de ideias, uma base filosófica. Um paradigma de desenvolvimento agrupa métodos e técnicas que seguem um mesmo conjunto de princípios; Dois dos mais conhecidos são: Desenvolvimento Estruturado; Orientação a Objetos(OO). Paradigma é a representação de um padrão a ser seguido. É um pressuposto filosófico, matriz, ou seja, uma teoria, um conhecimento que origina o estudo de um campo científico; uma realização científica com métodos e valores que são concebidos como modelo; uma referência inicial como base de modelo para estudos e pesquisas. (http://pt.wikipedia.org/wiki/paradigma) 02/10/2014 Aula 01-2

Paradigmas de desenvolvimento Estruturado: Modelo entrada processamento saída; Dados separados das funções; Orientado a Objetos (OO): O mundo é composto por objetos; Objetos combinam dados e funções; Conceitos do problema são modelados como classes de objetos que são associados e interagem entre si. 02/10/2014 Aula 01-3

Uso de ferramentas CASE (Computer Aided Software Engineering) na disciplina ArgoUML http://download.cnet.com/argouml/3000-6675_4-10762692.html (Preferencial por gerar código em Java a partir do Diagrama de Classes) Astah - http://astah.net/download StarUML http://staruml.sourceforge.net/docs/userguide(en)/ch05_1.html Qualquer outra que o grupo quiser 02/10/2014 Aula 01-4

Modelagem de Classe 02/10/2014 Aula 01-5

Programação Orientada a Objetos O foco deste curso é na programação OO. No entanto, é preciso entender os conceitos por trás do paradigma e aprender a modelar soluções OO. Um sistema construído usando um método orientado a objetos é aquele cujos componentes são partes encapsuladas de dados e funções, que podem herdar atributos e comportamento de outros componentes da mesma natureza, e cujos componentes comunicam-se entre si por meio de mensagens. Eduard Yourdon 02/10/2014 Aula 01 6

Definição de Programas Estruturados 02/10/2014 Aula 01-7

Conceitos de orientação a objetos: classes e objetos; atributos e comportamentos Objetos são instâncias de classes, que determinam qual informação um objeto contém e como ele pode manipulá-la. Um dos grandes diferenciais da programação orientada a objetos em relação a outros paradigmas de programação que também permitem a definição de estruturas e operações sobre essas estruturas está no conceito de herança, mecanismo através do qual definições existentes podem ser facilmente estendidas. Juntamente com a herança deve ser enfatizada a importância do polimorfismo, que permite selecionar funcionalidades que um programa irá utilizar de forma dinâmica, durante sua execução. (http://goo.gl/oqu7gz) 02/10/2014 Aula 02 8

Classes A definição de classes e seus inter-relacionamentos é o principal resultado da etapa de projeto de software. Em geral, esse resultado é expresso em termos de alguma linguagem de modelagem, tal como UML. Uma classe é um gabarito para a definição de objetos. Através da definição de uma classe, descreve-se que propriedades ou atributos o objeto terá. A definição de uma classe descreve também qual o comportamento de objetos da classe, ou seja, que funcionalidades podem ser aplicadas a objetos da classe. Essas funcionalidades são descritas através de métodos. Um método nada mais é que o equivalente a um procedimento ou função, com a restrição que ele manipula apenas suas variáveis locais e os atributos que foram definidos para a classe. 02/10/2014 Aula 02 9

Classes Na Unified Modeling Language (UML), a representação para uma classe no diagrama de classes é tipicamente expressa na forma gráfica, como se observa nessa figura, a especificação de uma classe é composta por três regiões: o nome da classe, o conjunto de atributos da classe e o conjunto de métodos da classe. 02/10/2014 Aula 02 10

Classes O nome da classe é um identificador para a classe, que permite referenciá-la posteriormente - por exemplo, no momento da criação de um objeto. O conjunto de atributos descreve as propriedades da classe. Cada atributo é identificado por um nome e tem um tipo associado. Os métodos definem as funcionalidades da classe, ou seja, o que será possível fazer com objetos dessa classe. Cada método é especificado por uma assinatura, composta por um identificador para o método (o nome do método), o tipo para o valor de retorno e sua lista de argumentos, sendo cada argumento identificado por seu tipo e nome. Através do mecanismo de sobrecarga (overloading), dois métodos de uma classe podem ter o mesmo nome, desde que suas assinaturas sejam diferentes. 02/10/2014 Aula 02 11

Classes O modificador de visibilidade pode estar presente tanto para atributos como para métodos. Em princípio, três categorias de visibilidade podem ser definidas: público, denotado em UML pelo símbolo +: nesse caso, o atributo ou método de um objeto dessa classe pode ser acessado por qualquer outro objeto (visibilidade externa total); privativo, denotado em UML pelo símbolo -: nesse caso, o atributo ou método de um objeto dessa classe não pode ser acessado por nenhum outro objeto (nenhuma visibilidade externa); protegido, denotado em UML pelo símbolo #: nesse caso, o atributo ou método de um objeto dessa classe poderá ser acessado apenas por objetos de classes que sejam derivadas dessa através do mecanismo de herança. 02/10/2014 Aula 02 12

Objetos Um objeto é um elemento que representa, no domínio da solução, alguma entidade (abstrata ou concreta) do domínio de interesse do problema sob análise. Objetos similares são agrupados em classes. No paradigma de orientação a objetos, tudo pode ser potencialmente representado como um objeto. Um programa orientado a objetos é composto por um conjunto de objetos que interagem através de trocas de mensagens. Na prática, essa troca de mensagem traduz-se na aplicação de métodos a objetos. 02/10/2014 Aula 02 13

Princípios fundamentais Abstração: Modelos mentais : visão simplificada do mundo construída por cada um em cada situação; Abstrair consiste em ignorar aspectos irrelevantes e concentrar nos principais. Abstração de Dados: Um tipo é definido por suas operações; Ex.: Um tipo pilha é definido por suas operações empilhar e desempilhar. 02/10/2014 Aula 01-14

Princípios fundamentais Abstração de Procedimentos: Uma operação com efeito bem definido pode ser tratada como atômica, mesmo que ela faça uso de outras operações de mais baixo nível; calcularsalarioliquido: definida em termos de obtersalariobruto, calcularimposto, calculardescontos, etc. Encapsulamento: Separar os aspectos externos (o que faz) dos aspectos internos (como faz): oaspectos externos = interface, contrato; oaspectos internos = implementação. Complemento da abstração: oabstração enfoca o comportamento observável de um objeto; oencapsulamento enfoca a implementação que origina este comportamento. Promove maior estabilidade: oclientes do objeto só conhecem sua interface; opodemos alterar a implementação de uma operação sem afetar o restante do sistema. 02/10/2014 Aula 02 15

Princípios fundamentais Modularidade: Decomposição do sistema em módulos: ocoesos (baixo acoplamento); oautônomos; ode interface simples e coerente. Fundamental para o reuso e extensão. Hierarquia: É uma forma de arrumar as abstrações e simplificar o entendimento do problema; Também promovem o reuso; Sinergia para administrar a complexidade: oabstração auxilia a identificar os conceitos relevantes do mundo real; oencapsulamento oculta a visão interna das abstrações identificadas; omodularidade nos dá um meio de agrupar logicamente abstrações relacionadas; opor fim, abstrações formam hierarquias. 02/10/2014 Aula 02 16

Diagrama de Casos de Uso Esse diagrama documenta o que o sistema faz do ponto de vista do usuário. Em outras palavras, ele descreve as principais funcionalidades do sistema e a interação dessas funcionalidades com os usuários do mesmo sistema. Nesse diagrama não nos aprofundamos em detalhes técnicos que dizem como o sistema faz. Este artefato é comumente derivado da especificação de requisitos, que por sua vez não faz parte da UML. Pode ser utilizado também para criar o documento de requisitos. Diagramas de Casos de Uso são compostos basicamente por quatro partes: Cenário: Sequência de eventos que acontecem quando um usuário interage com o sistema. Ator: Usuário do sistema, ou melhor, um tipo de usuário. Caso de Uso: É uma tarefa ou uma funcionalidade realizada pelo ator (usuário, ou outros sistema que interajam com o nosso) Comunicação: è o que liga um ator com um caso de uso. Obs: Consultem o anexo (RF-01 Matricular Aluno.docx ) para ver um exemplo de especificação de Caso de Uso. 02/10/2014 Aula 03-17

Diagrama de Casos de Uso 02/10/2014 Aula 03-18

História do Java Em 1992, A Sun criou um time (conhecido como Green Team) para desenvolver inovações tecnológicas; Esse time foi liderado por James Gosling, considerado o Pai do Java; Ideia de criar um interpretador para pequenos dispositivos, facilitando a reescrita de software para aparelhos eletrônicos; O projeto resultou em uma linguagem baseada em C e C++ chamada Oak; 02/10/2014 Aula 04 19

História do Java A inspiração do nome Java surgiu em uma cafeteria local, cujo café vinha de uma ilha da Indonésia chamada Java; 1993 e a Sun aposta no imediato potencial de utilizar Java para criar páginas da Web com o chamado conteúdo dinâmico; Na metade de 1994, construiu um browser chamado HotJava; Em maio de 1995, a Sun anunciou Java formalmente; Em Janeiro de 1996, a Netscape decide dar suporte a Java (browser Navigator); Em 1996, foi disponibilizada a primeira versão do Java (JDK 1.0); 02/10/2014 Aula 04 20

Principais Características Orientada a objetos Java é uma linguagem puramente orientada a objetos; Tudo em Java são classes ou instâncias de classes, com exceção de seus tipos primitivos de dados. Sem Ponteiros Java não possui ponteiros, isto é, Java não permite a manipulação direta de endereços de memória. 02/10/2014 Aula 04 21

Principais Características Coletor de lixo (Garbage Collector) Possui um mecanismo automático de gerenciamento de memória. Permite Multithreading Recursos que permite o desenvolvimento de aplicações capazes de executar múltiplas rotinas concorrentemente. 02/10/2014 Aula 04 22

Principais Características Independente de plataforma Programas Java são compilados para uma forma intermediária (bytecodes). Tratamento de exceções Permite o tratamento de situações excepcionais. Possui exceções embutidas e permite a criação de novas exceções. Segurança Pode executar programas via rede com restrições de execução, além de itens específicos da linguagem, como ser fortemente tipada, ter assinaturas digitais em suas classes compiladas, etc; 02/10/2014 Aula 04 23

Principais Características Máquina Virtual Java Utiliza o conceito de máquina virtual; Camada responsável por interpretar os bytecodes. 02/10/2014 Aula 04 24

Fases de um programa Java Pasta Src Pasta bin 02/10/2014 Aula 04 25

Fases de um programa Java Os programas Java normalmente passam por cinco fases para serem executados: Fase 1 (Edição): Consiste em editar um arquivo com código em Java e salvá-lo com a extensão.java; Fase 2 (Compilação): Comando javac compila o programa. O compilador Java traduz (.java =>.class); Fase 3 (Carga): Carrega o programa na memória antes de ser executado. Carregador de classe, pega o arquivo(s).class que contém os bytecodes. Fase 4 (Verificação): O verificador assegura que os bytecodes são válidos e não violam as restrições de segurança de Java. Fase 5 (Execução): A JVM máquina virtual Java (Interpretador) interpreta (em tempo de execução) o programa, realizando assim a ação especificada pelo programa. 02/10/2014 Aula 04 26

Plataformas Java A linguagem Java conta com três ambientes de desenvolvimento: JSE (Java Platform, Standard Edition): É a base da plataforma; inclui o ambiente de execução e as bibliotecas comuns são voltadas a aplicações para PCs e servidores. JEE (Java Platform, Enterprise Edition): A edição voltada para o desenvolvimento de aplicações corporativas e para Internet. JME (Java Platform, Micro Edition): A edição para o desenvolvimento de aplicações para dispositivos móveis e embarcados. 02/10/2014 Aula 04 27

Plataformas Java Além disso, pode-se destacar outras duas plataformas Java mais específicas: Java Card: Voltada para dispositivos embarcados com limitações de processamento e armazenamento, como smart cards. JavaFX: Plataforma para desenvolvimento de aplicações multimídia em desktop/web (JavaFX Script) e dispositivos móveis (JavaFX Mobile). 02/10/2014 Aula 04 28

Componentes de uma plataforma Java: JRE (Java Runtime Environment) É composta de uma JVM e por um conjunto de bibliotecas que permite a execução de softwares em Java. Apenas permite a execução de programas, ou seja é necessário o programa Java compilado (.class). JDK (Java Development Kit ) É composto basicamente por: Compilador (javac) + JVM; Visualizador de applets, bibliotecas de desenvolvimento (os packages java); 02/10/2014 Aula 04 29

Componentes de uma plataforma Java: JDK (Java Development Kit ) É composto basicamente por: Programa para composição de documentação (javadoc); Depurador básico de programas (Java Debugger - jdb) e a versão runtime do ambiente de execução (JRE). 02/10/2014 Aula 04 30

Anatomia de um Aplicativo do Android Agora que você criou seu primeiro aplicativo Hello World para o Android, é hora de dissecar as partes internas do projeto Android e examinar todas as partes que fazem com que tudo funcione. As várias pastas e seus arquivos são os seguintes: src contém os arquivos-fontes.java de seu projeto. Neste exemplo, só há um arquivo, MainActivity.java. O arquivo MainActivity.java é o arquivo-fonte de sua atividade. Você vai escrever o código para seu aplicativo neste arquivo; biblioteca Android 2.3 este item contém um arquivo, android.jar, que contém todas as bibliotecas de classe necessárias para um aplicativo do Android; gen contém o arquivo R.java, um arquivo gerado pelo compilador que referencia todos os recursos encontrados em seu projeto. Você não deve modificar este arquivo; assets esta pasta contém todos os recursos usados por seu aplicativo, tais como HTML, arquivos de texto, bases de dados, etc; 02/10/2014 Aula 04 31

Anatomia de um Aplicativo do Android res esta pasta contém todos os recursos usados em seu aplicativo. Ela também contém algumas subpastas: drawable-<resolução>, layout, e values. AndroidManifest.xml este é o arquivo de manifesto de seu aplicativo para o Android. Aqui, você especifica as permissões necessárias para seu aplicativo, bem como outras funcionalidades (tais como intent-filters, receptores, etc.). 02/10/2014 Aula 04 32

Eclipse Adicionando Plugins Menu->Help-> Install New Software (Add) http://db4o-eclipse.googlecode.com/svn/trunk/com.db4o.eclipse.update/ 02/10/2014 Aula 05 33

SDK Manager (Software Development Kit) 02/10/2014 Aula 05 34

Composição Java Implementação Herança H e r a n ç a Generalização Especialização Associação 02/10/2014 Aula 05 35

Java Implementação Herança // Prof. Adilson (abstract) - Esta não pode ser instaciada. // Estamos utilizando esta Classe para implementar os Conceitos: (Generalização / Especialização) que implicam em Herança / Polimorfismo. //todo o código escrito aqui será herdado pelas Classes filhas. Generalização - public abstract class Pessoa { // Prof. Adilson (protected) -> Somente as Classe filhas exergaram estas propriedades protected int id; protected String Nome; protected double CPF; protected double RG; // Prof. Adilson (extends) Herda tudo que foi escrito na Classe Pessoa. Especialização - public class clsaluno extends Pessoa { 02/10/2014 Aula 05 36

Java Implementação Herança /** * Prof. Adilson (Métodos abstract) Obrigam as Classes filhas a implementarem o método */ abstract public void Incluir(); abstract public void Ler(); abstract public void Alterar(); abstract public void Excluir(); /** * Prof. Adilson - (set) Atribuir valor a um Atributo */ public void setcpf(double CPF) { mcpf = CPF; } /** *Prof. Adilson - (get) Obter o valor de um Atributo */ public double getcpf() { return mcpf; } 02/10/2014 Aula 05 37