Relevância e Motivação. Programação Orientada a Objetos Utilizando Java. Qualidade do Software. Objetivos. Cancelamentos.



Documentos relacionados
Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.

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

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

Programação Orientada a Objetos

A Linguagem Java. Alberto Costa Neto DComp - UFS

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

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

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.

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

Java. Marcio de Carvalho Victorino

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

JAVA. Introdução. Marcio de Carvalho Victorino. Page 1 1/40 2/40

insfcanceof new public switch transient while byte continue extends for int null

2 Orientação a objetos na prática

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Noções sobre Objetos e Classes

Sintaxe Básica de Java Parte 1

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

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

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

Unidade IV: Ponteiros, Referências e Arrays

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

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

JAVA. Fabrício de Sousa

JavaScript 2.0X X

CURSO DE PROGRAMAÇÃO EM JAVA

Módulo 06 Desenho de Classes

Algoritmos e Programação

Criar a classe Aula.java com o seguinte código: Compilar e Executar

Programação por Objectos. Java

Java 1 visão geral. Vitor Vaz da Silva

Prof. Esp. Adriano Carvalho

Universidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java

Programação por Objectos. Java

Tipos, Literais, Operadores

Tipos, Literais, Operadores

Programação Orientada a Objetos C ++ 4 Conceitos de OO em Java Classes e Objetos

Introdução à linguagem

POO Programação Orientada a Objetos. Classes em Java

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

Programação Orientada a Objetos em Java

BSI UFRPE Prof. Gustavo Callou

Universidade Federal de Uberlândia

Programação com Acesso a BD. Programação com OO Acesso em Java

public Agenda() { compromissos = null; } public int getnumerodecompromissos() { if (compromissos==null) return 0; else return compromissos.

MsC. João Maria MsC. Liviane Melo

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

Introdução à Programação. Interface, Polimorfismo e Dynamic Binding

Exercícios de Revisão Java Básico

Encapsulamento de Dados

P n o t n ifíci c a a Un U i n ve v r e si s da d d a e d e C a C t a ól ó ica c a d o d o R i R o o d e d e J a J n a e n i e ro o PU P C U -Ri R o

Java Básico. Classes Abstratas, Exceções e Interfaces Prof. Fernando Vanini Ic-Unicamp

Desenvolvimento OO com Java Orientação a objetos básica

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

Linguagem de Programação I. Orientação a Objetos em Java

Programando em C++ Histórico da Linguagem C

Algoritmia e Programação APROG. Linguagem JAVA. Básico. Nelson Freire (ISEP DEI-APROG 2012/13) 1/31

Orientação a Objetos. Conceitos Iniciais Introdução a Linguagem Java. Gil Eduardo de Andrade

Programação em C++: Introdução

Sistemas Distribuídos

Invocação de Métodos Remotos

LINGUAGEM DE PROGRAMAÇÃO JAVA

Técnicas de Programação II

Especialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares

Programação Estruturada e Orientada a Objetos

AULA Uma linguagem de programação orientada a objetos

Programação online em Java

Programação por Objectos. Java

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

Análise de Programação

INTRODUÇÃO AO JAVA PARA PROGRAMADORES C

Aula 1 POO 1 Prática. Profa. Elaine Faria UFU

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

Análise de Programação

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java

Linguagens de. Aula 02. Profa Cristiane Koehler

ITENS FUNDAMENTAIS. Profª Angélica da Silva Nunes

Resumo da Introdução de Prática de Programação com C. A Linguagem C

Programação Java. com Ênfase em Orientação a Objetos. Douglas Rocha Mendes. Novatec

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

Palavras Reservadas da Linguagem Java

Programação Orientada a Objetos

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

Construção de novas Classes em Java. Classes Atributos Métodos Herança...

UNIVERSIDADE FEDERAL DO PARANÁ

PROGRAMA DE DISCIPLINA

Aula 1. // exemplo1.cpp /* Incluímos a biblioteca C++ padrão de entrada e saída */ #include <iostream>

5 Caso de estudo O cartão fidelidade

PADI 2015/16. Aula 1 Introdução à Plataforma.NET

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

INTRODUÇÃO AO C++ SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO

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

Transcrição:

Programação Orientada a Objetos Utilizando Java Pedro de Alcântara dos Santos Neto e-mail: pasn@ufpi.edu.br Home Page: http:// www.ufpi.br/pasn Relevância e Motivação Técnicas a serem utilizadas na prática Desenvolver software de qualidade Impacto econômico e social Objetivos Discutir aspectos de qualidade e modularidade de software Introduzir conceitos de POO e Java Indicar como programas em Java podem ser adequadamente escritos e estruturados Utilizar ambientes de programação em Java Desenvolver uma aplicação de médio porte Qualidade do Software Impacto Econômico e Social» Segurança de pessoas» Disponibilidade de serviços essenciais» Competitividade: produtores/consumidores» Melhores produtos a um menor custo Crise de Software 25% dos projetos são cancelados O tempo de desenvolvimento é bem maior do que o estimado 75% dos sistemas não funcionam como planejado A manutenção e reutilização são difíceis e custosas 10240 5120 2560 1280 640 320 160 80 40 20 10 0 Cancelamentos 0 10 20 30 40 50 %

Atrasos Causas da Crise 10240 5120 2560 1280 640 320 160 80 40 20 10 0 Planejado Real Essências e Acidentes Má qualidade das linguagens, ferramentas e metodologias Complexidade dos sistemas Dificuldade de formalização 0 10 20 30 40 50 60 Meses Qualidade do Software Impacto de Qualidade em Manutenção Correção Robustez Extensibilidade Reusabilidade Compatibilidade Eficiência Portabilidade Testabilidade Integridade Adequação ao uso 70% do custo de software corresponde a manutenção Essência: modificação de requisitos Acidente: depuração Melhorias 9% Debugging 12% Manutenção Hw 6% Outros 3% Requisitos 41% Programação record Pessoa nome : string; idade : integer; end procedure aniversario begin... Urgências 12% Formato dos Dados 17% abstração nome idade nascimento Pedro 25 14/11/1974 formalização

Programação Orientada a Objetos Objeto Conta Bancária Foco nos dados (objetos) do sistema, não nas funções Estruturação do programa é baseada nos dados, não nas funções As funções mudam mais do que os dados Estados do Objeto Conta Histórico de JAVA (20) 895,32 21.342-7 Iniciou como uma linguagem de programação para equipamentos eletrônicos (microondas, PDA s,...) Inicialmente denominada OAK» Pequena, confiável e portável Ideal para a Internet! Sua afirmação se deu com o surgimento do HotJava Java Uma Linguagem Moderna» Java é uma linguagem simples, orientada a objetos, distribuída, interpretada, robusta, segura, independente de arquitetura, portável, de alto desempenho, suportando multithreads e dinâmica. Sun Microsystems, 1995 Java é Simples Sintaxe familiar a vários programadores (baseada em C e C++) Elimina várias redundâncias de C++ Simples para algumas aplicações, desde que se conheça alguns pacotes Simples dado tudo que a linguagem oferece

Java Eliminou... Java é Orientada a Objetos Variáveis e funções globais Ponteiros goto, struct e union Número variável de argumentos Tipos fracos Remoção de objetos Classes parametrizadas! Objetos e Classes Encapsulamento de dados e operações Subtipos e Herança Polimorfismo Ligações dinâmicas (dynamic binding) Criação e remoção dinâmica de objetos Implementações de Java Java é Portável Interpretada» Bytecodes da JVM» Independente de plataforma Compilada» Código nativo em C ou C++ Alta performance? Em tese, redução de custos com migração, instalação, treinamento, etc. Na prática, ainda é necessário depurar programas antes de migrar para outra plataforma Java é Distribuída Java é Robusta Oferece suporte de alto nível para acesso a Internet / WWW (pacote java.net) Objetos distribuídos com RMI e CORBA Suporte para acesso a arquivos remotos, banco de dados, etc. Ausência de ponteiros Fortemente tipada Coleta de lixo automática Exceções tipadas Acesso a arrays é verificado Variáveis são inicializadas automaticamente

Programa em Java Compilando e Executando Formado por 3 elementos» Declaração de Pacotes» Utilização de imports» Definições de classes O Programa HelloWorld class HelloWorld { public static void main (String args[]){ System.out.println( Hello World! ); Compilação:» javac NomedaClasse.java» Geração de um arquivo.class Execução:» java NomedaClasse Argumentos Execução de um Applet:» appletviewer ArquivoHtml.html Compilando e Executando Palavras Chaves Use uma IDE» Eclipse (recomendado)» NetBeans abstract, boolean, break, byte, case, catch, char, class, const, continue, defalt, do, double, else, extends, false, final, finally, float, for, goto, if, implements, import, intanceof, int, interface, long, native, new, null, package, private, protected, public, return, short, static, super, switch, syncronized, this, throw, throws, transient, true, try, void, volatile, while Identificadores Tipos de Dados Primitivos Nomear variáveis, métodos, classes e labels. Não pode ser palavra reservada e deve iniciar com letra, $ ou _.» louco // válido» intgrande // válido» $valor1 // válido» 3_variavel // inválido»!verdade // inválido Tipos Numéricos:» byte bt = 100; // -128..+127» short st = -4; // -32768..+32767» int it = 10; // -2 31..+2 31-1» long lg = 300L; // -2 63..+2 63-1» float ft = 2.5; // 32bit» double db = 6.5e10; // 64bit

Tipos de Dados Primitivos Caracteres e Cadeias (strings)» char ch = a ; // caracter» char ch1 = 48 // caracter a» Integer val = a ; // caracter com int» String st = Tipo ; // cadeia de carac.» char hx = 0xA; // valor hexadec 10» String b = Hello Java!\n ; //?» String c = Falaram \ Hello Java!\ ; //? Tipos de Dados Primitivos Códigos de escape para caracteres» \b backspace» \f formfeed» \n newline» \r car return» \t tab» \\ \» \» \» \xhh hexadecimal Tipos de Dados Primitivos Tipo boolean» boolean sougrande=true;» boolean verdadefalsa=false; Matrizes» Declaração (int inteiros[]; double d[];)» Construção (inteiros=new int[5];)» Inicialização inteiros[1]=1; inteiros[2]=2; Operadores Matemáticos» + a=a+1 adição» - b=b-1 subtração» * c=c*2 multiplicação» / d=d/4 divisão» % e=e%2 resto» - f=-f negação» ++ a++ incremento» -- b-- decremento Operadores Comparativos Exercício em Sala» == if (a==3) {... Igual»!= if (a!=5) {... não igual» < t = a < b; menor» > x = a > b; maior» <= if (a<=b) {... menor igual» >= j = ~a >= b; maior igual» && if (a=0 && b=2) AND» if (a<3 c>=5) OR Crie um pequeno programa em Java para testar as expressões anteriores, utilizando as variáveis a e b, com valores 3 e 6, respectivamente.

Operadores Binários» ~ a=~a; complemento binário» & a=a&0x22; AND» a=a b; OR» ^ a=a^b; XOR» << a=<<a; deslocamento esquerda» >> a=a<<2; deslocamento direita Exercício em Sala» Faça um pequeno programa em Java para testar o funcionamento dos operadores binários O Operador Ternário (?) O Operador Ternário (?)» a = x? b : c; class Ternario { public static void main(string args[]) { short v1 = 10; short v2 = 5; short menor; menor = (v1 < v2)? v1 : v2; System.out.println(menor); Fluxo de Controle (if.. else) class TernarioComIf { public static void main(string args[]) { short v1 = 10, short v2 = 5, menor=0; if(v1<v2) menor=v1; else menor=v2; System.out.println(menor); Switch (teste de múltipla escolha) class SwitchApp { public static void main(string args[]) throws Exception{ System.out.println( Tecle opcao ); char opt = (char)system.in.read(); switch (opt) { case 1 : System.out.println( Nada... ); break; case s : case S : System.out.println( Sim ); break; case n : case N : System.out.println( Não ); break; default: System.out.println( Erro ); break; Enquanto (While) class Whileapp { public static void main(string args[]) throws Exception{ System.out.println( Tecle um númeral: ); char nu = (char)system.in.read(); while (nu <> 5 ) { System.out.println( Tente novamente ); System.out.println( Tecle númeral: ); nu = (char)system.in.read(); System.out.println( Acertou!!!! ); Faça.. Enquanto (Do.. While) class DoWhileApp { public static void main(string args[]) throws Exception { char lt; do { System.out.println( Tecle uma letra: ); lt = (char)system.in.read(); while ( c!= f ); System.out.println( Acertou!!!! );

Para (For) class testeargs { public static void main(string args[]) { int i; System.out.println(args.length); for(i=0;i<args.length;i++) System.out.println(args[i]); Para (For) class ForLoopApp { public static void main(string args[]) { for (int i = 0; i < 10; i++) { if (i == 7) continue; // retorna ao for 1 System.out.println( for 1: i= + i); System.out.println( for 1 final i= + i); for (i = 10; i > 0; i--) { if (i == 3) break; // sai do for 2 System.out.println( for 2: i= + i); System.out.println( for 2 final: i= + i); Classes e Objetos Classe de Contas Objetos» métodos + atributos» estado encapsulado Classes» Agrupamento de objetos do mesmo tipo Classe de Contas: Assinaturas class Conta { void credito (double valor) { void debito (double valor) { String numero() { double saldo() { Conta (String n) { Classe de Contas: Descrição class Conta { private String numero; private double saldo; void credito (double valor) {saldo = saldo + valor; void debito (double valor) {saldo = saldo - valor; String numero() {return numero; double saldo() {return saldo; Conta (String n) {numero = n; saldo = 0;

Criação Dinâmica de Objetos... Conta conta1; conta1 = new Conta( 21.342-7 ); conta1.credito(500.87); conta1.debito(45.00); System.out.println(conta1.saldo());... Descrições de Classes Componentes abertos e fechados Podem ser facilmente estendidos, sem alterar os sistemas Podem ser prontamente utilizados para construir sistemas Classe de Bancos: Assinatura class Banco { void cadastro(conta c) { void credito(string num, double val) { void debito(string num, double val) { double saldo(string num) { void transfere(string d, String p, double v) { Banco () { Classe de Bancos: Descrição class Banco { private Conta[] contas; private int indice = 0; void cadastro(conta c) { contas[indice] = c; indice = indice + 1; Classe de Bancos: Descrição private Conta procurar(string n) { int i = 0; boolean achou = false; while ((! achou) && (i < indice)) { if (contas[i].numero() == n) achou = true; else i = i + 1; if (achou == true) return contas[i]; else return null; Classe de Bancos: Descrição void debito(string num, double val) { Conta c; c = this.procurar(num); if (c!= null) c.debito(val); else System.out.println("Conta Inexistente!");

Classe de Bancos: Construtor Mais Sobre Construtores Banco( )?» Construtor da Classe» Inicialização de um objeto da classe» Caso não sejam declarados construtores, utiliza-se o construtor default Banco( ) { contas=new Conta[50]; Múltiplos Construtores» Overloading (Sobrecarga) public class Circulo { double x, y, r; Circulo(double x, double y, double r) { this.x=x; this.y=y; this.r=r; Circulo(double r) {x=0.0; y=0.0; this.r=r; Circulo(Circulo c) {x=c.x; y=c.y; this.r=c.r; Circulo() {x=0.0; y=0.0; r=0.0; Exercício em Sala Completar a implementação da classe Banco com o construtor e os métodos transfere e saldo. Implementar um programa principal que crie objetos das classes definidas, testando sua utilização.