segunda-feira, 29 de outubro de 2012

Aula 12 24/10/12



Na aula de hoje o professor dedicou a sua aula para realizar a revisão da prova com sete questões, que esta marcada para o dia 30/10, o mesmo entregou via email as tarefas para realizar sozinho, sendo que depois fomos juntamente corrigindo cada exercício da revisão.

No entanto acredito que foi bem produtiva esta aula, que foi dedicada para relembrar alguns dos detalhes que são muito importante, e que também não estava me lembrando tais em como corretamente formar uma classe em java, métodos main, um pouco mais de vetores e a saída impressa de um código realizando um teste de mesa um método que ficou muito mais claro ao acompanhar com a lógica de pensar do professor.

terça-feira, 23 de outubro de 2012

Aula 11 23/10/12


     Bom iniciamos a aula corrigindo o ultimo exercício dado em aula, que foi o utilizado a classe Funcionário onde usamos vetores para criar 10 funcionarios cadastrado na mesma "Empresa". Após o interva-lo o professor retornou a aula com o ArrayListy que segundo o mesmo, é uma biblioteca que foi criado em Java para facilitar a vida do programador, e é claro o ArrayList é muito semelhante a um vetor, porém podemos dizer que é uma classe que controla os objetos. A vantagem dessa classe é que ela fornece e vai adicionando valores conforme for sendo adicionando valores, sem ter que definir tamanho no vetor. Não podemos esquecer que o ArrayList nao aceita referencias do tipos primitivo tais como(int, double e etc). Também é usado o "get" que pega o valor da posição e o "Set" que vai adicionando o valor pego pelo "get". No ArrayList também é usado o método "size" que define o tamanho do vetor e não esquecendo que devemos importar a classe do ArrayList (import java.util.Arraylist;).

import java.util.Arraylist;


class Array{

public static void main(String[] args){

ArrayList<Integer> idades = new ArraList();

for(){
idade.add(x * 10);
}

for(int x=0; x < idades.size(); x++){
System.out.println(idades.get(x));
}
}
}

// Reflexão na opinião a aula foi bem aplicado o conteúdo proposto, sobre vetores e ArrayList, achei muito embaraçoso no entanto encomodei bastante o professor com as minhas duvidas, porém um contéudo muito importante que facilita boa parte na criação do código sobre o vetor. Além é claro um aprendizado muito importante, mas somente com mais pratica para ter mais que um conceito e sim um aperfeiçoamento. 

http://docs.oracle.com/javase/7/docs/api/index.html

segunda-feira, 22 de outubro de 2012

Aula 10 17/10/12

Nesta aula o professor teve um imprevisto no seu trabalho e o mesmo não pode comparecer a sua aula, ele nos encaminhou um exercício da apostila Caelum pág 73, exercícios 06 e 07. Realizei o meu trabalho e enviei ao mesmo no final da aula, não sei se o meu resultado final deste trabalho solicitado foi o esperado pelo professor, pois da ultima aula não pude comparecer.

O conteúdo principal realizado neste trabalho foi feito sob o ultimo exercício trabalhado em aula, que era criar uma classe chamada funcionário e depois conforme o trabalho apliquei o conceito sobre vetores, conforme mostra o exemplo abaixo;



public class Empresa {

Funcionario empregados[] = new Funcionario[10];
String nomeFant;
String cnpj;
int novoFunc = 0;

void adiciona(Funcionario f) {
this.empregados[novoFunc] = f;
this.novoFunc += 1;
     }
void mostraEmpregados(){
for(int x=0; x<this.empregados.length; x++){
if(this.empregados[x] != null){
System.out.println("Funcionario na posicao "+x+":");
this.empregados[x].mostra();
     }
   }
}
boolean contem(Funcionario f){ 
for (int x= 0; x < this.empregados.length; x++) { 
if (empregados[x] == f){
System.out.println("Funcionario ativo na empresa!");
return true;
   }
}
System.out.println("Funcionario não existente!");
return false
   }
}

Aula 09 16/10/12

        Nesta aula não pude estar presente devido a um treinamento em Porto Alegre - RS que foi pelo meu trabalho, solicitei ao professor Jossandro o conteúdo que o mesmo aplicou na aula via email nesta aula, para também ter tido a possibilidade de acompanhamento melhor e estudado a matéria em casa.



Aula 08 10/10/2012


      Na aula de hoje, foi trabalhado o método recursivo, a recursividade trabalha de forma similar a um laço de repetição, na verdade tudo que fazemos em laço, pode ser feito em recursividade. A recursividade é nada mais nada menos do que uma função dentro da outra e ela deve ser pensada como uma pilha (estrutura de dados onde o ultimo a entrar, deve ser o primeiro a sair). A estrutura dela consiste em descer até a base fazendo os cálculos ou rotinas de cada instrução, e então da base até o topo da pilha são empilhados os resultados de cada instrução e no final o topo contém o resultado que é retornado. Podemos dizer também que o método recursivo utiliza muito o processamento e a memória do computador, depende da forma utilizada no código pode causar lentidão no sistema ou até mesmo travar a operação do sistema.

Além é claro dos exercicios e desafios que trabalhamos um exemplo mais claro foi o de fatorial, conforme o exemplo abaixo!

class Fatorial{

static int fatorial(int num){

if(num == 1){

System.out.println("Fatorial de 1 eh 1");
return 1;

}else{
int fat = num * fatorial(num -1);
System.out.println("Fatorial de " + num + " eh " + fat);
return fat;
}
}
}

public static void main(String[] args){
int val = fatorial(5);
}


//Reflexão na opnião a aula foi bem aplicado o conteúdo proposto, sobre métodos recursivos, achei muito embaraçoso, porém um contéudo muito importante que é um método que trabalha em forma de pilha, além é claro um aprendizado muito importante, mas somente com mais pratica para ter mais que um conceito e sim um aperfeiçoamento.

terça-feira, 9 de outubro de 2012

Aula 07 09/10/12

CORREÇÃO DO EXERCÍCIO

Na aula de hoje, trabalhamos em cima do exercicio da apostila Caelum pág 61. O exercício de inicio foi uma correção, pois já havia realizado em casa, o exercício solicitava criar uma classe chamada de Funcionario e com escopo das variaves que fazem parte do tipo Funcionario, onde eu coloquei o nome, departamento declarados como uma "String" e o rg declarada como "int", o restante que era o salario e o bonus como "double". Após ter criado essa parte criamos também alguns dos métodos que era necessário, tais como um método bonifica e um calculaGanhoAnual. Foi trabalhado esse exercicio até o interva-lo da aula, e após o interva-lo o professor iniciou uma explicação de como criar um método que ele mesmo, onde é chamado de RECURSÃO, utilizando o "Fibonacci". 


// Reflexão: 

Hoje ao meu entendimento sobre á aula do Jossandro, foi bem fácil de compreender, tive algumas duvidas no  primeiro exercício, na parte do método demite, onde presentava um divergência, mas o mesmo me explicou passo a passo. Ele me mostrou que criando um if e um else no método mostra, invocando a ação do método demite que retorna um true ou um false, que na hora de rodar no método main do TestaFuncionario, válidar o "Status do Funcionário", se é Ativo ou Demitido. 

Abaixo segue o exemplo!


void mostra(){
System.out.println("\nNome: " + this.nome);
System.out.println("Departamento: " + this.departamento);
System.out.println("Admissão: " + this.admissao.dia + "/" + this.admissao.mes + "/" + this.admissao.ano);
System.out.println("Registro: " + this.registro);
System.out.println("Salario atual: " + this.salario);
if(this.demitido){
System.out.println("*Status Demitido!");
}else{
System.out.println("*Status Ativo!");
}
}


void demite(){
this.demitido = true;
System.out.println("Funcionario Demitido!");
}


segunda-feira, 8 de outubro de 2012

Para saber mais


Conceitos

UML é uma linguagem visual para especificação (modelagem) de sistemas orientados a objeto. A UML privilegia a descrição de um sistema seguindo três perspectivas:
  1. Os diagramas de classes - (Dados estruturais);
  2. Os diagramas de casos de uso (Operações funcionais);
  3. Os diagramas de seqüência, atividades e transição de Estados (Eventos temporais).
Os casos de uso de um projeto de software são descritos na linguagem UML através de Diagramas de Casos de Uso (Use Case). Diagrama de "Use Case": É um diagrama usado para se identificar como o sistema se comporta em várias situações que podem ocorrer durante sua operação. Descrevem o sistema, seu ambiente e a relação entre os dois. Os componentes deste diagrama são os atores, os "Use Case" e os relacionamentos. Casos de uso e Relacionamentos. Ainda pode-se usar as primitivas Pacotes e Notas.
Ator: Representa qualquer entidade que interage com o sistema durante sua execução essa interação se dá através de comunicações (troca de mensagens). Um ator pode ser uma pessoa (usuário, secretaria, aluno...), um dispositivo (impressora, máquina...), hardware (placa de modem, scaner...), softwares (sistema de bd, aplicativos...), etc.
Algumas de suas características são descritas abaixo:
  • Ator não é parte do sistema. Representa os papéis que o usuário do sistema pode desempenhar.
  • Ator pode interagir ativamente com o sistema.
  • Ator pode ser um receptor passivo de informação.
  • Ator pode representar um ser humano, uma máquina ou outro sistema.
Representação:

OBS: Atores representam, na verdade, papeis desempenhados por pessoas, dispositivos ou outros quando interagem com o sistema. Um ator cujo identificador seja ALUNO não representa um aluno, mais sim um aluno qualquer, uma pessoa que esteja interagindo com o sistema na qualidade de aluno.
Use Case: Como foi exemplificado acima, é uma seqüência de ações que o sistema executa e produz um resultado de valor para o ator. Modela o dialogo entre os atores e o sistema; é um fluxo de eventos completos. Algumas de suas características são descritas abaixo:
  • Um "Use Case" modela o diálogo entre atores e o sistema.
  • Um "Use Case" é iniciado por um ator para invocar uma certa funcionalidade do sistema.
  • Um "Use Case" é fluxo de eventos completo e consistente.
  • O conjunto de todos os "Use Case" representa todas as situações possíveis de utilização do sistema.
Relacionamento: Os relacionamentos ligam as classes/objetos entre si criando relações lógicas entre estas entidades. Os relacionamentos podem ser dos seguintes tipos:
  • Associação: É uma conexão entre classes, e também significa que é uma conexão entre objetos daquelas classes. Em UML, uma associação é definida com um relacionamento que descreve uma série de ligações, onde a ligação é definida como a semântica entre as duplas de objetos ligados.
  • Generalização: É um relacionamento de um elemento mais geral e outro mais específico. O elemento mais específico pode conter apenas informações adicionais. Uma instância (um objeto é uma instância de uma classe) do elemento mais específico pode ser usada onde o elemento mais geral seja permitido.
Os relacionamentos em um diagrama de casos de uso podem envolver dois atores e dois casos de uso ou um ator e um caso de uso e assim sucessivamente. O relacionamento é representado através de uma seta : 
Exemplo: Diagrama de "Use Cases" para um sistema automatizado de Matrícula num Curso



















http://www.macoratti.net/vb_uml2.htm
http://docs.kde.org/stable/pt_BR/kdesdk/umbrello/uml-basics.html

quarta-feira, 3 de outubro de 2012

Aula 06 03/10/12



Bom nesta aula, o professor Jossandro me orientou e instruiu sobre alguns aspectos que tive mais duvidas, tais como:

* Formas melhores de criar o meu método "transfere" do exercicio da apostila Caelum página 54, onde o mesmo me mostrou a forma utilizando o "Boolean", que deve retornar algum valor, como mostra o exemplo abaixo. Entendi que neste exemplo que o mesmo me sinalizou, indentifico que o "if", faz uma validação de o saldo esta positivo a o saldo é transferido caso contrario não realizado a transferencia de um determinado valor de uma conta para outra.


boolean transfere(Conta destino, double valor){
if(this.saca(valor)){
destino.deposita(valor);

return true;
}else{
return false;

}
}

Reflexão

      Na minha opinião a aula foi aplicada tranquilamente, orientações e duvidas questionadas tais como eu tive referente ao "new", que conforme a explição do Jossandro, foi que quando utilizamos o "new" criamos um objeto e reservamos um espaço alocado na memória. Devo resaltar também que obtive um bom aproveitamento desta aula, questionei em todas as minhas duvidas tirando o "new", mas também formas de lógicas aplicada nos métodos com o "boolean", com o void que não deve retornar nenhum valor, também acompanhei o exercicio da página 59 da apostila Caelum, que utliza os métodos liga(), acelera() e o pegaMarcha(). Agora em casa fazer alguns exercicios passados em aula, pelo professor Jossandro.

Aula 05 02/10/12


Na aula de hoje, recomecei a diciplina devido ter sido reprovado anteriormente, nada fora do comum das aulas anteriores que já havia estudado, porem com certas dificuldades, mas que neste novo recomeço irei obter um bom aproveitamento da diciplina, não por estar refazendo a diciplina, mas por que irei a toda aula me dedicar 100% e cobrar 100% também a qualquer dúvida que me surgir ao longo do semestre.

Nesta aula foi a continuação da aula anterior que não tive a participação:

O conteúdo da aula foi sobre Orientação a Objetos Básica, conforme estudado da página 42 da apostila Caelum.

O professor inicio explicando sobre o conceito básico em classes, objetos, atributos, e métodos em Java, também explicou sobre o funcionamento do "new" quando criamos um objeto ou tipo.


O que é uma classe?
Na verdade, a classe não é exatamente um objeto, mas sim um modelo ou especificação que define um tipo de objeto. Certo?

Mas o que seria um objeto?

De uma forma muito simplificada, o objeto seria uma ferramenta de comunicação entre o usuário e o seu programa, que apresenta um agrupamento de dados e procedimentos definidos na classe.

Primeiro exemplo:
Vamos supor que você está escrevendo um programa de corrida de carro. Será necessário criar um objeto carro, que terá as características definidas pela classe modelo. Então, de acordo com as instruções do usuário, esse carro poderá acelerar ou retardar seu movimento. Mas esse "comportamento" do carro só poderá ser manipulado, se ele estiver corretamente definido pela classe modelo (programação para reconhecer quando deve acelerar, quando deve se virar para a direita, etc.).

O que é um atributo?
Atributos e variáveis são a mesma coisa em questão de funcionalidade. Ambos são endereços de memória que tem um espaço ou tamanho definido de acordo com o tipo de dado que será guardado, por exemplo: caracter, número, número decimal, etc. Em Java, costumamos utilizar o termo atributo, que é nada além do que uma variável que está dentro de uma classe. Como tudo que fazemos em Java está contido dentro de uma classe, então usamos o termo atributo ao invés de variável.

O que é o "new" e para que é usado?
Quem faz o papel de instanciador em Java é o new. New trata de reservar memória o suficiente para o objeto e criar automaticamente uma referência a ele. Para new conseguir determinar o objeto, precisamos usar o método construtor que será usado como base para instanciar a classe e gerar o objeto.
Podemos dizer em outras palavras que o "new", cria um objeto e reserva a referencia do objeto criando um espaço disponível na memória.

Tecnicamente, declaramos uma variável qualquer como sendo do tipo da classe (ex.: TV minhaTV; ), depois instanciamos o objeto atribuindo a variável o resultado obtido por new mais o método construtor (ex.: minhaTV = new TV(); ).

Exe:

public class Conta {

int numero;
String nome;
double saldo;
double limite = 100;
}

public class Programa {

public static void main(String[] args){


Conta minhaConta;
Conta minhaConta2;

minhaConta = new Conta();
minhaConta2 = new Conta();

  }
}