Академический Документы
Профессиональный Документы
Культура Документы
Alice Cabral
Aula 1
04/05
Orientao a Objectos
Historico
A orientao a objectos (OO) foi concebida na dcada de 70. Origem na linguagem SIMULA-67(decada de 60 Noruega), que j implementava alguns conceitos da OO. SIMULA-68 foi a primeira linguagem a suportar os conceitos da OO. Smaltalk, criada pela Xerox, popularizou e incentivou a OO. Outras linguagens:
C++ 1980 na Bell Laboratories por Bjarne Stroustrup Java (Oak) 1991 na Sun Microsystems por James Gosling Object Pascal(Delphi), C#,
Aula 1
04/05
Programao Estruturada
As tcnicas de programao tradicionais, como por exemplo a decomposio funcional, leva o desenvolvedor a decompor o sistema em partes menores (funes), criando um emaranhado de inmeras funes que chamam umas s outras. Geralmente no h separao de conceitos e responsabilidades, causando dependncias enormes no sistema, dificultando futuras manutenes no cdigo do programa. No existe muito reaproveitamento de cdigo, ao contrrio, muitas vezes se tem muito cdigo duplicado.
Aula 1
04/05
O paradigma da Orientao a Objectos, ou Programao Orientada a Objectos (POO ou OOP), eleva a programao e o desenvolvimento de sistemas para um novo patamar. A OO um mecanismo moderno que ajuda a definir a estrutura de programas baseada nos conceitos do mundo real, sejam eles reais ou abstractos. A OO permite criar programas componentizados, separando as partes do sistema por responsabilidades e fazendo com que essas partes se comuniquem entre si, por meio de mensagens. Essas partes do sistemas so chamadas de OBJECTOS.
Aula 1
04/05
Vantagens
1. 2. 3. 4. 5. Reduo das linhas de cdigo programadas Separao de responsabilidades Representao de Objectos do mundo real estrutura mais prxima da aplicao Alta flexibilidade funcional maior absoro de mudanas Desenvolvimento mais rpido
Construo a partir de objectos padres Reutilizao de modelos corporativos
6. 7. 8. 9.
Sistemas so montagens de cdigo previamente testado Menos erros e menor manuteno Maior uniformidade entre sistemas diferentes interfaces, interoperabilidade Projecto OO no modela uma tarefa, mas os aspectos necessrios sua execuo. O mesmo modelo pode ento ser usado para tarefas similares (reusabilidade de projeto) Reusabilidade maior produtividade e qualidade
Superior modularidade => menor iterao Mais fcil depurar e isolar erros
Aula 1
04/05
Orientao Objectos
A OO introduz e enfatiza os seguintes conceitos: Objecto Mensagem Classe Abstraco Encapsulamento Herana Polimorfismo
O que um Objecto?
Coisas do mundo real: mesas, papis, animais Objectos tm propriedade Mesa
Feita de madeira Tem uma altura Tem uma localizao
O que um Objecto?
Os objectos do mundo real tm duas caractersticas em comum: ESTADO e COMPORTAMENTO. Estado O estado de um objecto revela seus dados importantes. Por exemplo, uma pessoa tem: idade, peso, altura, cor de cabelo, cor da pele. Comportamento O comportamento so as aces que aquele objecto pode exercer ou executar. Por exemplo, uma pessoa pode: andar, falar, ouvir, pular.
O que um Objecto?
Objeto um software packet contendo uma coleo de dados e um conjunto de procedures que so o nico meio de acesso aos dados Os dados compem o ESTADO do objeto As procedures formam a INTERFACE do objeto e definem seu COMPORTAMENTO
Objecto
Um objecto de software mantm seu estado em uma ou mais de suas variveis. Ele implementa seu comportamento atravs de seus mtodos. Mtodo o mesmo que funo ou procedimento. Por definio: Um objecto um pedao de software que possui variveis (estado) e mtodos (comportamento).
Objecto
Um sistema pode conter um ou inmeros objectos activos. Cada objecto activo no sistema em particular tambm chamado de instncia. As diferentes instncias possuem seu prprio estado. O exemplo abaixo mostra vrias instncias de pessoas.
Objecto
Cada instncia de pessoa possui um estado diferente em particular, como visto na ltima figura. Porm, cada instncia, alm do estado, tambm possui seus mtodos (comportamento) que operam sobre o prprio estado. Em outras palavras, para pular, cada pessoa vai fazer uma determinada fora dependendo da sua idade, altura e peso, por exemplo. A ideia que cada objecto seja responsvel por seus dados (estado) e seja capaz de realizar as prprias operaes que lhe foram atribudas (comportamento).
Objecto
Esses objectos podem ser tanto objectos concretos (carro, livro, nota fiscal), quanto conceitos abstractos (conta corrente, venda, pessoa jurdica). Na Orientao a Objectos, os objectos do mundo real so modelados e representados no mundo computacional, ou seja, dentro do sistema, por meio de objectos de software. Cada objecto deve ser conhecido, bem definido e ter seu limite e um significado dentro do sistema. Os objectos de software, assim como os objectos do mundo real, tambm possuem estado e comportamento.
Objecto
Mensagem
Um objecto por si s no significa muito em um sistema. Para ter algum sentido e valor esses objectos precisam interagir e comunicar-se entre si. Os objectos se comunicam por meio de mensagens.
Enviar uma mensagem significa executar um mtodo. Ento, se A envia uma mensagem para B, podemos entender como o objecto A executando um mtodo do objecto B.
Objecto
Mensagem
As mensagens so compostas por trs partes: Objecto a quem a mensagem endereada Nome do mtodo a ser chamado Parmetros que o mtodo recebe
Move
MoveTo
Destroy
Local : string Mtodos (de Acesso) Mensagens Load Variveis : Dados Protegidos Altura : int ... Lift
Software organizado como uma coleo de objetos interdependentes cada um fornecendo um servio especfico atravs de sua interface Objetos so entidades comuns do domnio da aplicao Sistemas modelam diretamente a interao entre estes objetos no ambiente computacional
Object Terminology
Cada tecnologia cria um novo vocabulrio
Method Abstraction Message Object
Instance
Polymorphism
Class
Encapsulation Inheritance
Classes
Classes Tipos Objetos Variveis
Descrio abstrata das caractersticas de objetos similares Compartilhamento de estrutura e comportamento Objetos = Instncias de classes Variveis & Mtodos
Classes
No mundo real frequentemente percebemos vrios objectos de um mesmo tipo. Por exemplo: seu carro um dos muitos carros existentes no mundo. Usando a terminologia OO, dizemos que um carro em particular uma instncia da classe de objectos conhecida como carros. Os carros, em geral, possuem estado (cor, potncia do motor, combustvel) e comportamento (ligar, acelerar, mudar marcha) em comum. O estado de cada carro independente e pode ser diferente do estado dos outros carros. Cada carro pode ter uma cor diferentes, por exemplo. A partir dessas semelhanas, os fabricantes de veculos tiram vantagem disso para padronizar a construo de carros de um mesmo tipo, definindo um modelo nico com caractersticas iguais para todos os carros a serem produzidos.
Classes
Na Orientao a Objectos tambm possvel ter vrios objectos do mesmo tipo, que compartilham caractersticas em comum. Tirando vantagem dessa semelhana entre alguns objectos, tambm possvel criar modelos para esses objectos. Esse modelo chamado de CLASSE. As classes so tipos que podem ser criados. Por definio: Uma classe um modelo (prottipo) que define as variveis (estado) e os mtodos (comportamento) comuns a todos os objectos do mesmo tipo.
Classes
Na classe so definidas as variveis e implementados os mtodos. Os objectos so criados a partir de suas classes. A cada objecto criado o sistema aloca memria para o novo objecto e suas variveis.
OBS: Comummente fazem confuso entre classes e objectos. Lembre-se que classe define as caractersticas comuns e os objectos so instncias dessas classes, com estado prprio.
Encapsulamento
Encapsular, v. t. Incluir ou encerrar em uma cpsula Restringir o acesso aos dados apenas atravs de seus mtodos Esta proteco consiste em se usar modificadores de acesso mais restritivos sobre os atributos definidos na classe e fornecendo mtodos que alteram os valores destes atributos de alguma forma. O encapsulamento ajuda a prevenir o problema de interferncia externa indevida sobre os dados de um objecto, como objectos que possam alterar os dados de outros objectos indevidamente. Vantagens:
Facilita a incorporao de mudanas limitando-as a uma ou poucas classes Abstrai clientes da representao interna
Encapsulamento
Exemplo: saldo da conta bancria
O saldo certamente no pode ser alterado ou manipulado directamente, mas sim atravs de mtodos adequados para isso, como mtodos que fazem lanamentos de dbitos e crditos. A alterao directa do saldo causaria um problema de clculos e inconsistncia de dados. Justamente por isso devemos criar classes bem encapsuladas, que fornecem mtodos adequados para operar sobre os dados dos objectos daquela classe. O uso de encapsulamento tambm evita que um programa torne-se to interdependente que uma pequena mudana tenha grandes efeitos colaterais.
Herana
Classes podem ser definidas em termos de outras Herana o mecanismo que permite que classes com caractersticas comuns sejam herdadas. Compartilhamento de cdigo Reuso de mtodos e variveis das superclasses para as subclasses Permite redefinio de mtodos e variveis
SUPER
SUB
SUB
SUB
Herana
Com a herana possvel criar classes derivadas (subclasses) a partir de classes bases (superclasses). As subclasses so mais especializadas do que as suas superclasses, mais genricas. As subclasses herdam todas as caractersticas de suas superclasses, como suas variveis e mtodos.
Herana
Sintaxe da criao de Classe class NomeDaClasseASerCriada extends NomeDaClasseASerHerdada
Java permite que uma classe herde apenas as caractristicas de uma nica classe, ou seja, JAVA no permite herana multipla.
Herana
Polimorfismo
Polimorfismo, s. m. qualidade de possuir mltiplas formas, adj. polimorfo, multiforme Esconde implementaes de uma operao com uma interface comum Simplifica o programa e o torna mais claro responsabilidade do objeto que recebe a mensagem de executar a operao de modo adequado a sua classe
Polimorfismo
Permite programar no geral e no no especfico Permite escrever programas que processam objectos que partilham a mesma superclasse em uma hierarquia de classes como se todas fossem objectos da superclasse.
Classes (abstract)
Define a estrutura sem fornecer uma implementao completa de cada mtodo.
Os mtodos abstract devem ser implementados pela subclasse. Uma classe abstract no pode ser instanciada Qualquer subclasse de uma classe abstract deve implementar todos os mtodos abstract ou ser tambm uma classe abstract
Classes (abstract)
classe A
class A { abstract void callme(); void metoo() { System.out.println(Mtodo callme de A); }}
classe B
class B extends A { void callme() {
classe Abstract
class Abstract { public static void main (String args[]) { A a = new B(); a.callme(); a.metoo(); }}
Passos da Modelagem OO
Encontrar os objetos Organizar os objetos Descrever como eles iteragem Definir as operaes dos objetos Definir os objetos internamente
Encontrando os Objetos
Entidades do domnio da aplicao Substantivos presentes nos requisitos do sistema Bom comeo: aprendendo-se a terminologia bsica do problema, os objetos so encontrados Seleo de objetos relevantes, essenciais e estveis Exemplo, Aplicao Bancria:
Cliente, Conta Corrente, Conta de Poupana Banco, Funcionrio etc
Organizando os Objetos
Classificao = encontrar similaridade entre objetos (classes) Objetivos
Definir uma hierarquia Evitar duplicaes de mtodos e variveis
Exemplo:
PESSOA NOME CPF
CRC Cards
Class
ContaCorrente
Collaborators
Taxas Bancrias ...
Responsibilities
Manter Balano Efetuar Lanamentos Controlar Retiradas ...
Descrever Operaes
Seus nomes so extrados da interface Objetivo
Descrever exatamente o que faz cada operao Descrever do que precisa cada operao
Programas Extensos
Numerosas procedures Dezenas de pessoas Comunicao se torna catica
Programao Modular
Programas quebrados em componentes menores Diminui Interao entre as partes => Menor comunicao
Construo de Programas
Programao Estruturada
Decomposio Funcional Modelagem Top-Down Desenvolvimento Cascata
Analysis
Design
MAIN
Implement
Read
Process
...
Add Record
Edit Rec
Delete Rec
Decomposio Funcional
Qualidade de um projeto indicado nas fases de manuteno e evoluo Durante a evoluo as funes so as partes mais volteis Um sistema bem aceito sempre ser extendido pelo usurio
Modelagem Top-Down
Disciplina lgica e bem organizada para lidar com complexidade de problemas, mas... No leva em conta a natureza evolucionria de sistemas grandes Caracteriza os sistemas como tendo uma funo maior Negligencia os dados No promove reusabilidade
Desenvolvimento em Cascata
Adequada quando h um entendimento completo do sistema sendo modelado Assume um desenvolvimento uniforme dos passos de elaborao No acomoda desenvolvimento evolucionrio por prototipao Usurio entra em contato apenas no ltimo estgio => qualquer mudana requer grandes revises
Custo-Benefcio
Desenvolvimento mais rpido
Reusabilidade Prototipao
Adaptabilidade
Custo-Benefcio
Maturidade da Tecnologia Necessidade de Padres
Bancos de Dados, Classes Comercializadas
Programa em Java
class HelloWord{
}
}
Programa em Java
class HelloWorld{ public static void main(String args[]) {
System.out.println(Hello, World!);
}
}
Maisculas e minsculas fazem diferena Classes em arquivos de mesmo nome ex: HelloWorld.java
Programa em Java
Byte compilador de Java C:\> javac HelloWord.java
C:\>
Programa em Java
class HelloWorld{ public static void main(String argv[]) {
System.out.println(Hello, World!);
}
}
- class define uma classe, de nome HelloWorld.
Programa em Java
class HelloWorld{ public static void main(String argv[]) {
System.out.println(Hello, World!);
}
}
public um modificador de acesso Indica que esta funo (main) pode ser chamada por outras classes e objetos
Programa em Java
class HelloWorld{ public static void main(String argv[]) {
System.out.println(Hello, World!);
}
}
static indica que a funo main pode ser utilizada sem que um objeto desta classe seja criado
Programa em Java
class HelloWorld{ public static void main(String argv[]) {
System.out.println(Hello, World!);
}
}
void especifica um tipo vazio, ou seja, esta funo no retorna qualquer valor
Programa em Java
class HelloWorld{
public static void main(String argv[]) {
System.out.println(Hello, World!);
} } A funo main apenas indica onde o programa deve comear
Programa em Java
class HelloWorld{
public static void main(String args[]) {
System.out.println(Hello, World!);
} } Parmetros da funo Devem ser separados por ; Se no houver parmetros: main()
Programa em Java
class HelloWorld {
public static void main(String args[]) {
System.out.println(Hello, World!);
} } Indica a chamada da funo println de System.out
Comentrios em Java
class HelloWord{ // este comentario acaba no fim da linha public static void main(String args[]) { System.out.println(Hello, World!); } }
Comentrios em Java
class HelloWord{ /* este comentario acaba aqui -> */ public static void main(String args[]) { System.out.println(Hello, World!); }
Comentrios em Java
class HelloWord{ /*
Comentrios em Java
class HelloWord{ /** * este comentario serve para * documentacao automatica */ }
Declarando variveis
As declaraes de variveis consistem de um tipo e um nome de varivel: como segue o exemplo: int idade; String nome; boolean existe; Os nomes de variveis podem comear com uma letra, um sublinhado ( _ ), ou um cifro ($). Elas no podem comear com um nmero. Depois do primeiro caracter pode-se colocar qualquer letra ou nmero.
Expresses e operadores
Operadores Aritmticos
Operador + * / %
Expresses e operadores
Exemplo Aritmtico: class ArithmeticTest { public static void main ( Strings args[] ) { short x = 6; int y = 4; float a = 12.5f; float b = 7f; System.out.println ( x + x + , y + y ); System.out.println ( x + y = + (x + y) ); System.out.println ( x - y = + (x - y) ); System.out.println ( x / y = + (x / y) ); System.out.println ( x % y = + ( x % y ) ); System.out.println ( a + a + , b + b ); System.out.println ( a / b = + ( a / b ) ); } }
Expresses e operadores
Mais sobre atribuies Variveis podem atribuidas em forma de expresses como: int x, y, z; x = y = z = 0; No exemplo as trs variveis recebem o valor 0; Operadores de Atribuio:
Expresso x += y x -= y x *= y x /= y
Expresses e operadores
Incrementos e decrementos Como no C e no C++ o Java tambm possui incrementadores e decrementadores : y = x++; y = --x; As duas expresses do resultados diferentes, pois existe uma diferena entre prefixo e sufixo. Quando se usa os operadores ( x++ ou x-- ), y recebe o valor de x antes de x ser incrementado, e usando o prefixo ( ++x ou x ) acontece o contrario, y recebe o valor incrementado de x.
Expresses e operadores
Operadores Relacionais
Java possui vrias expresses para testar igualdade e magnitude. Todas as expresses retornam um valor booleano (true ou false).
Significado Igual Diferente ( No igual) Menor que Maior que Menor ou igual Maior ou igual
Expresses e operadores
Operadores lgicos
Operador && || ! & | ^ << >> >>> x <<= y x >>= y x >>>= y x &= y x |= y x ^= y Significado Operao lgica E (AND) Operao lgica OU (OR) Negao lgica Comparao bit-a-bit E (AND) Comparao bit-a-bit OU (OR) Comparao bit-a-bit OU-Exclusivo (XOR) Deslocamento a esquerda Deslocamento a direita Deslocamento a direita com preenchimento de zeros Complemento bit-a-bit Atribuio com deslocamento a esquerda ( x = x << y ) Atribuio com deslocamento a direita ( x = x >> y ) Atribuio com deslocamento a direita e com preenchimento de zeros ( x = x >>> y ) atribuio AND ( x = x & y ) atribuio OR ( x = x | y ) atribuio XOR ( x = x ^ y )
1 // Fig. 2.7: Adicao.java 2 // Programa de adio que exibe a soma de dois nmeros. 3 import java.util.Scanner; // programa utiliza a classe Scanner 4 5 public class Adicao 6{ 7 // mtodo principal inicia a execuo do aplicativo Java 8 public static void main( String args[] ) 9 { 10 // cria Scanner para obter entrada a partir da janela de comando 11 Scanner input = new Scanner( System.in ); 12 13 int num1; // primeiro nmero a somar 14 int num2; // segundo nmero a adicionar 15 int soma; // soma de num1 e num2 16 17 System.out.print( "Entre com o primeiro nmero: " ); // prompt 18 num1 = input.nextInt(); // l primeiro o nmero fornecido pelo usurio 19 20 System.out.print( " Entre com o segundo nmero: " ); // prompt 21 num2 = input.nextInt(); // l o segundo nmero fornecido pelo usurio 22 23 soma = num1 + num2; // soma os nmeros 24 25 System.out.printf( "Soma %d\n", soma ); // exibe a soma 26 27 } // fim do mtodo principal 28 29 } // fim da classe Adicao
Aula7
24/05
Estruturas de Controle
O Java contem tipos de estruturas de controle ou instrues de controle: a instruo de sequencia, intrues de seleo(3 tipos) e instrues de repetio.
Aula7
24/05
Estruturas de Controle
Estrutura de sequencia em JAVA A estrutura de sequencia em Java esta incorporada ao Java. A menos que instruido de outra forma, o computador executa as instrues Java uma depois da outra na ordem em que elas so escritas.
Aula7
24/05
Estruturas de Controle
Estrutura de seleo em JAVA A instruo de uma nica seleo if A instruo de seleo dupla ifelse A estrutura de seleo multipla switch
Aula7
24/05
Estruturas de Controle
Aula7
24/05
Estruturas de Controle
Estrutura de seleo if...else A instruo de seleo dupla ifelse If (expresso booleana) declarao1; [else delarao2;]
if-else
Aula7
24/05
Estruturas de Controle
Aula7
24/05
Estruturas de Controle
Imprime Reprovado
Imprime Aprovado
Aula7
24/05
Estruturas de Controle
Aula7
24/05
Estruturas de Controle
Aula7
24/05
Estruturas de Controle
switch
switch (expresso) { case valor1; declaracao; break; case valor2; declaracao; break; [default: declaracao; break;] }
Aula7
24/05
Estruturas de Controle
Case b
Ao(es) do case b
break
case z
Ao(es) default
Ao(es) do case z
break
Aula7
24/05
Estruturas de Controle
Aula7
31/05
Estruturas de Controle
1. Uma varivel de controle(ou contador de loop) 2. O valor inicial da varivel de controle 3. O incremento(ou decremento) pelo qual a varivel de controle modificada a cada passagem pelo loop(tambm conhecido como cada iterao do loop) 4. A condio de continuao do loop que determina se o loop deve continuar
Aula7
31/05
Estruturas de Controle
Sintaxe
inicializao; While(condio de continuao); { instruo; incremento; }
Aula7
31/05
Estruturas de Controle
Aula7
31/05
Estruturas de Controle
15
16 17 System.out.println( );// gera a sada de um caractere de nova linha }//fim do main
Aula7
31/05
Estruturas de Controle
agregao
Aula7
31/05
Estruturas de Controle
Sintaxe
for (inicializao; condio de continuao; incremento;) instruo;
Aula7
31/05
Estruturas de Controle
Aula7
31/05
Estruturas de Controle
Int counter = 1
System.out.println(%d , counter );
Aula7
31/05
Estruturas de Controle
Sintaxe
do { instruo; }while (condio);
Aula7
31/05
Estruturas de Controle
Aula7
31/05
Estruturas de Controle
System.out.println(%d , counter );
++counter
Aula7
07/06
Estruturas de Controle
Aula7
07/06
Estruturas de Controle
1 2 3 4
Aula7
07/06
Estruturas de Controle
Aula7
07/06
Estruturas de Controle
1 2 3 4 6 7 8 9 10
Aula7
07/06
Variveis de Instncia
Aula7
07/06