-> Sobrecarga-> overloading -> em java metodos podem ter o mesmo nome de
sde que nao sejam ambiguos, (ou seja deve haver uma maneira de distingui-los no
momento da chamada oupor diferenca no numero de parametros ou no tipo que os mes
mos requerem..
interface Autenticavel{
//metodos de uma interface sao publicos e abstra
tos. sempre!
boolean autentica(int senha);
//quem desejar ser autentcavel precisa saber aut
enticar dado um inteiro retornando um boolean
}
//a interface é um contrato onde quem assina se responsabi
liza a implementar estes metodos.
//uma interface pode declarar uma série de metodos mas nun
ca contem a implementacao deles.
//a interface espoe o que o objeto deve fazer, como ele
faz é problema vai ser definido em uma implementacao desssa interface
Ex:
conexao com o banco de dados.
para que todas as chamadas para banco de dados diferentes respei
tem a mesma regra.
Interface Conexao contem todos os métodos necessarios para a comun
icacao e troca de dados com um banco de dados
cada banco de dados fica encarregado de criar a sua implementaca
o para essa interface
querm for usar uma Conexao nao precisa se importar com qual obje
to exatamente esta trabalhando, ja que ele vai cumprir o papel que toda conexao
deve ter. nao importa se é uma conexao com um Oracle ou mysql
interface AreaCalculavel{
double calculaArea();
}
//implementando algumas classes que sao area calculavel:
class Quadrado implements AreaCalculavel{
private int lado;
//construtor
public Quadrado(int lado){
}
//metodo obridatorio devido a interface
public double calculaArea(){
return this.lado * this.lado;
}
}
class Retangulo implements AreaCalculavel{
private int largura;
private int altura;
public Retangulo(int altura, int largura){
this.altura = altura;
this.largura = largura;
}
public double calculaArea(){
return this.altura * this.largura;
}
}
usar interfaces é uma maneira muito mais elegante de imple
mentar as classes. elas trasem vantagens de nao acoplar as classes
uma vez que heranca atraves de classes traz muito acopla
mento,
2 regras de ouro "prefira composicao ao inves de heranca
(e um..)"
"programe voltado para
a interface e nao para a implementacao"
interface Tributavel{
double calculaTributos();
}
class ContaCorrente extends Conta implements Tributavel{
//outros atributos e metodos
public double calculaTributos(){
return this.saldo * 0.01
}
}
class SeguroDeVida implements Tributavel{
public double calculaTributos{
return 24;
}
}
class TestaTributavel{
public static void main(String[] args){
ContaCorrente cc = new
cc.deposita(100);
Tributavel t= cc;
System.out.println(t.calculaTributos());
}
}
ao chamar o meodo getSaldo através da referencia t funciona normal
mente, a linha em que atribuimos ums conta corrente a um tributavel ~e apenas pa
ra enxergar que ~e possível fazê-lo. Nesse nosso caso, isso nao tem uma utilidade. E
ssa possibilidade sera util para o poximo exerciciso
class GerenciadorDeImpostoDeRenda{
private double total;
void adiciona(Tributavel t){
System.out.println("Adiciondo tributavel: " +t);
this.total = this.total + t.calculaTributos();
}
public double getTotal(){
return total;
}
//main que instancia diversas classe que implementam Tri
butavel e passa como argumento para um GerenciadorDeImpostosDeRenda.
//noa posso passar qualquer tipo de conta para o metodo
adiciona, apanas a que implementa Tributavvel. alem disso posso passe o se
}
Tratamento de ERROS
tecnica usual "magic numbers";
cada um desses metodos pode ter suas propias variaveis l
ocais, sendo que por exemplo, o metodo 1 nao enxerga as variaveis declaradas den
tro do main
como java e muitas outras linguagfem fazem isso atravez da pilha
de invoca~cao onde trosa invocaçâo de metodo é empilhada em uma estrutura de dados qu
e isola a area de memoria de cada um. quando um metodo termina retorna, ele colt
a para o metodo que o invocou. ele descobre isso atravez da pilha de execu~c"ao
stack"
pasta jogar fora o gomo no topo da pilha stackframe
Isso é conhecido como RASTRO DA PILHA(STACKTRACE). e uma saida ump
ortantissicma para o programador tanto que em qualquer forum ou lista de discuss
ao e comum os programadores enviarem juntamente com a descricao do problema essa
stacktrace
o sistema de exce~coes do java funciona da seguinte maneira: qua
ndo uma exveçao é lancada thrown, a jvm entra em estado de alerta e vai ser o metodo
atual toma alguma precaoucao ao tentar execuar esse trecho de codigo. como pord
emos ver o medodo2 nao toma nenhuma medida diferente do que vimos ate agora
como o medoo 2 nao esta tratando esse problema a jvm para a exec
utar dele anormalmente sem esperar ele terminar e volta um stachframe pra baixo
onde eer afieta nova veirficacao
o metodo 1 esta se precavendo de um prblema chamado ArrayIndexOu
tOfBoundsException??? nao... volta pra o main onde tambem nao ha prote~cao entao
a jvm morre, na verdade quem morre é apenas a Thread corrente, veremos mais pra f
rente...
Obvimamente, aqui estamos forcando o err, e nao faria sentido to
marmos cuidado com ele. seria facil arrumar um problema desse. basta navegarmos
na array ate o seu length.
porem apenas para entender o controle de fluxo de uma Exeption,
vamos colocar o codigo que vai tentar executar o bloco perigoso
caso o problema seja do tipo ArrayIndexOutOfBoundsException, ele
será pego(catched). Repare que é interessante que cada excecao no jave tenha um tip
o... ela pode ter atributos e memtodos
try{
for(int i=0; i<=15;i++){
array[i] =1;
System.out.println(i);
}
}catch(ArrayIndexAoutOfBoundsExeception e){
System.out.println("erro: "+e);
}
em vez de fazer o tray em torno do for interio tente apenas com
o bloco de dentro do for:
for(int i=0; i<=15;i++){
try{
}catch(ArrayIndexOutOfBoundsException e){
System.out.println("errro: "+e);
}
}
a diferençca...
ele captura o erro, trata a mensagem e retorna o fluxo de execuçca
o para o for, o que permite ele tentar acesar os campos seguintes do vetor e mai
s excessao sao levantadas
colovano o try/catch em volta da chamada do metodo 2
ele nao terminaria de ser executado.. a mensagem fim do metodo 2
nao seria exibida
a partir do momento que uma exception foi catched a execução volta a
o normal a partir daquele ponto.
Excecoes de Runtime mais comuns...
que tal tentarmos dividir um numero por zero? sera que o
computador conseguqe fazer aquilo que nos definirmos qu ano existe??
public clas TestandoADivisao{
public class void main(){
int i=2232;
i=i/0;
System.out.println("O resultado é: "+i);
}
}
java.lang.AruthmeticException: / by zero
public calss TestaReferenciaNula{
public static void main(String args[]){
Conta c = null;
System.out.println("Saldo atual "+c.getS
aldo());
}
}
java.lang.NullPointerException;
tepare qum um arrayIndexOutOfBoundsException ou um NullP
ointerException poderia ser facilmente evidaodo com o for corretamento escrito c
om ifs que checariam os limites da arra
outro caso em que tambem ocorre tal tipo de excecao e qu
ando um cast errado e feito- feremos mais pra frente.. Em todos os casos tais er
ros provavelmente poderiam ser evitaods pelo programador
e por esse motivo que o java nao te obriga a dar o try c
atch nessa excetion e chamamos essas exececoes de
UNCHECKED - estas exceçoes poderiam ser facilmente evitada
s pelo programador por isso o compilador nao checa se voce esta tratando essas e
xcecoes.
os erros em java sao um tipo de excecao que tambem pode
ser tratado. eles representam problemas na maquia virtual e nao devem ser tratad
os em 99%
Outro tipo de excecao: Checked Exceptions x Unchecked Exceptions
fica claro com os exempolos de codigo acima que
nao e necesario declarar que voce esta tentando fazer algo onde um erro possa oc
orrer. os dois exemplos com ou sem try/catch compilaram e rodaram. em um o erro
temino o programa e no outro foi possivel trata-lo
mas nao e sso este tipo de excesao que existe em java. o
u toutro tipo, obriga o meodo ou construtor a tratar o erro. um exemplo que pode
mos mostrar agora, eo de abrir um arquivo para leitura, onde pode ocorrer o erro
do arquivo nao existir(veremos como trabalhar ocm arquivos em outro capitulo,.
nao se pereoocu
public static void metodo(){
new java.io.FileReader("arquivo.txt");
}
o codigo acima nao compila e o complilador avisa que e n
ecessario tratar o FileNotFoundExeption que pode ocorrer.
"unreported exception java.io.FileNotFoundException" mus
t be caught or declared to be thrown
para compilar e fazer o programa funcionar, precisamos t
ratar o erro de um de dois jeitos. O primeiro , e trata-lo com o try e catch do
mesmo jeito que usamos no exemplo anterior com um array:
public static void metodo(){
try{
new java.io.FileReader("arquivo.txt");
}catch(java.io.FileNotFoundException e ){
System.out.println("Nao foi possivel abr
ir o arquyivo para leitura");
}
}
}
Collections framework...
- a amizade e um contrato segundo o qual nos conpromentemos a prestar pe
quenos favores para que no-los retribuam com grandes.
Conjuntos: java.util.set();
um conjunto (Set) funciona de forma analoga aos conjuntos da mat
ematica ele e uma colecao que nao permite elementos duplicados.l
ao percorrer um conjunto sua ordenacao nao e conhecida.
um conjunto é implementado atravez da interface set;
e tem como principais implementacoes as classes HashSet e TreeS
et;
Set conjunto() = new HashSet();
conjunto.add("neto"):
conjunto.add("algusto"):
conjunto.add("neimar"):
System.out.println(conjunto);
no java 5.0 Sets tambem podem ser parametrizados evitando o uso
de casts
Mapas - java.util.Map
Um mapa é composto de uma associçao de uma chave e um valor. e equi
valente ao conveito de dicionario, usado e varias linguagens
algumas linguagens como Perl ou PHP possuem suporte nativo a ma
pas onde sao conhecidos como matrizes associativas.
java.util.Map é um mapa, pois é possivel usá-lo para mapear uma chave
por exemplo:
mapeie o valor "Caelum" a chave "escola", ou mapeoe Rua verguei
ro a rua
chaves-> valores
Possiveis acoes de um mapa:
mapeie uma chave a um valor
o que esta mapeado na chave x
remapeie uma certa chave
quero o conjunto de chaves
quero o conjunto de vaores
desmapeie a chave x
Collections : Set(HashSet, TreeSet) e List(LinkedList, A
rrayList)
add
addAll
clear
contains
isEmpty
iterator
remove
size
toArray
exclusivo de List
add - em uma posicao especifica
addAll- a partir de uma dada posicao
get
listIterator
Operacoes em Maps.
clear
containsKey
containsValue
get
put
remove
size
Mapas- java.util.Map
metodo put(Object, Object) da intercae map receb
e a chave e o valor de uma nova associao. para saber o que esta assoviado a um d
eterminado objeto-chave, passa-se objeto no metodo get(Object).
criamos duas contas corrente e as colocamos em u
m mapa associando-as ao seu dono respectivamente.
ContaCorrente c1 = new ContaCorrente();
ContaCorrente c2 = new ContaCorrente();
c1.deposita(10000);
c2.deposita(10000);
Map mapaDeContas = new HashMap();
Cobit -
Visão Executiva.
para muistas empresas, ingmacao e a tecnologia que da suporte a
ela representa o seu recurso de maiopr valor, mas frequentemente o menos reconhe
cido.
Empresas de Sucesso reconhecem os beneficos da Tecnologia da Inf
ormaçãoe a usa para
Moditvacao
como identificar o inicio e o fim de um processo
quais simbolos permitem identificar decisao
onde e como estao representados as atividades do processo de venda de produto?
existem sub processos, como identifica-los?
Problemas- ambiquidade dos simbolos
ausencia de um padroa para a notacao de elementos de processos de negocio
influencia no desenvolvimento de novas alicacoes
atrelado a um fornecedor
dificik de atingir interoperabilidade
comunicao visualizacvao e divulgacao dos porcessos de negocio entre as partes in
teressadas fica prejudicada
cada interessado cria e usa uma notacao que entende ser a mais adequada
Business process Management initiative BPMI desenvolveu o padrao BPMN
em 2001 houve a formacao
surgiu em 2002
desde 2005 foi assumida pelo OMG
BPMN ~e uma linguagem grafica usada para representar processos de negocio.
estees processos de negocios sao representados atraves de um conjunto de simbolo
s padrao que sao organizados em um diagrama de processos de negocio
objetivo: comunicar uma grande variedade de informacao diferentes audiencias
analista de negocio
desenvolcedores
interessados nbos processos
eventos
atividade
gateway
Pool- representa um participante no processo; pools sao usadas quando tem-se doi
s oumais processos de negocios
2 ou mais porcesso sestao fisicamente separados a comunicacao entre as pools ~e
feita atraves de troca de mensagens
Lane- e a sub-participacao dentro de uma pool. sao usadas para separar processos
dentro de uma mesma organizacao
Aula 3 cederj
- Ciclo de vida do projeto e porcessos de gestao de projeto
Objetivo:
+ definir ciclo de vida do projeto
+ conceituar as principais fases de um projeto
+ distiguir ciclo de vida do projeto e ciclo de vida do produto
+ distinguir grupos de processos da gestao de projeto
Processo- conjunto de acoes e atividades inter relacionadas que sao exec
utadas para atigir um produto, resultado ou servico
Tecnologia da informacao tem se tornado difusa na dinamica turbulenta dos atuais
ambientes empresariais.
Enquanto no passado, executivos de negócios podem delegar, ignorar ou evitar decisõe
s de TI, hoje isso se torna impossível na maioria dos setores e industrias.
Essa maior dependencia da TI implica em uma maior vunerabilidade que está inerente
mente presentes em ambientes de TI. O tempo de inatividade do sistema ou da rede
tornou-se muito dispendioso para qualquer organizaç~zao nos idas de hoje. Tomemos
por exemplo o impacto da paralisa~cao no setor bancário ou em um ambiente médico. O
fator de resco é acompanhado por um amplo espectro de ameaças externas, tais como e
rros e omissões, abusos e fraudes.
Certamente a TI tem potencial nao somente para apoiar estrategias de negocio exi
stentes mas tambem potencial para formar novas estratégias. Neste sentido torna-se
nao somente um fator de sucesso para a sobrevivencia e prosperidade da organiza
cao, mas tambem uma oportunidade para diferenciar e alcancar vantagem competitiv
a.
Nesta perspectiva, o departamente se move de um provedor de servicos de produtos
a um parceiro estrategico
1.1.2 Governanca de TI para EMpresas Governanca de TI
Tecnologia da informacao e sua utilizacao em ambientes de negocios sofreu forte
transformacao na ultima decada. Desde a introducao da TI nas organizacoes, acade
mios e profissionais conduziram pesquisas e desenvolveram teorias e melhores par
ticas neste dominio do conhecimento. Isto resultou em uma variadade de definicao
es de governanca de TI, algumas das quais sao formulados na fig..
DEFINICOES de governanca de TI.
3 paragrafo conclusao
Concluindo, a socidade deve estar atenta a tais manobras
do governo, as motivações para a o aprovação dessa lei
Deve-se se observar a forma com que esse controle seria
estabelecido
tais medidas devem ser bem analizadas e dicutidas pois
- Otimizacao de Codigo
Sorting Algorithms
visual:
http://www.cs.oswego.edu/~mohammad/classes/csc241/samples/sort/S
ort2-E.html
*Quicksort
+ link de demonstracao da execucao: http://algol.dcc.ufl
a.br/~heitor/Projetos/TBC_AED_GRAFOS_WEB/TBC_AED_GRAFOS_WEB_arquivos/ordenacao/q
uick/QuickSort.html
+ quick sort paralelizado: http://myxman.org/dp/node/183
observar imagem:
+ https://im.ufba.br/pub/MATA52/Seminarios/algoritmo_par
alelo.pdf
Documentacao:
O algoritmo quick sort apresentado recebe como entrada uma lista
de numeros o os imprime ordenados.
A funçâo quicksort recebe o primeiro e o ultimo apontador de uma lis
ta,.
para execucao esperimental deve-se chamar "$ quicksort < entrada
.txt"
Conteudo:
- quicksort.c : contem a funcao quicksort
- quicksort.h : contem prototipos de funcoes auxiliares
- main.c : programa principal que chama o quixcksor
t para demosntracao
- entrada.txt : arquivo que deve conter uma lista de num
eros inteiros a serem ordenados.
*Bucket
+ http://www.youtube.com/watch?v=Iiuqrns0Gwk
- subdivide a ordenacao em regioes, pode ser utilizado i
nividualmente ou em conjunto com insert sor que o torna bem interessante
-
* Sample Sort
- é uma versao melhorada do bucket sort
algoritmos sorts:
http://www.cs.oswego.edu/~mohammad/classes/csc241/samples/sort/S
ort2-E.html
Insertionsort (int data[],int n) {
int tmp,i,j;
for (j=1; j<n; j++) {
i =j - 1;
tmp = data[j];
while ( (i>=0) && (tmp < data[i]) ) {
data[i+1] = data[i];
i--;
}
data[i+1] = tmp;
}
}
admin
adminimepo