Página 1 de 2

C o caramba !! Nem C++/#.

MensagemEnviado: 26 Jun 2013 09:11
por fabim
AI AI.
Pessoar do JAVA.

Eu estou a alguns meses me batendo para entender o conceito, e não tanto a sintaxi do java.

E estou me deparando com sério problemas sobre classe.

Eu tenho uma lógica que eu uso no ANSI C, e gostaria muito de fazer o mesmo em javanes, mesmo havendo outras formas eu ainda quero fazer da forma que eu vou explicar !!

eu faço o seguinte.

Possuo uma struct ponteiro.
Dentro desta possuo N variaveis, float, int, short, char, Bit.
Eu aponto esta para um buffer da serial.

Existe a possibilidade de criar estrutura em java ?
Existe possibilidade de criar estrutura ponteiro ?

Tem tem ?

eu imagino que tipo, seja criada uma classe global ou algo parecido !!

Abraços
Fabim

Re: C o caramba !! Nem C++/#.

MensagemEnviado: 26 Jun 2013 09:37
por KrafT
Que seria "C++/#"?

Postincremeta C e divide por #?

Tá, em Java na sei, mas C# pode? (C# não tá na lista).

Re: C o caramba !! Nem C++/#.

MensagemEnviado: 26 Jun 2013 09:55
por Red Neck Guy
depois de passado pelo preprocessador fica c++/"."
Acho que mesmo assim, não compila não.

Re: C o caramba !! Nem C++/#.

MensagemEnviado: 26 Jun 2013 09:55
por fabim
KrafT escreveu:Que seria "C++/#"?

Postincremeta C e divide por #?

Tá, em Java na sei, mas C# pode? (C# não tá na lista).


Um amigo meu começou a me dar uma ajuda para eu aprender a falar javanes !!
Eu conheço um pouco de C++, e ja vi C#.
Mais não vejo tanta semelhança no contexto geral não !! Alguns topicos apenas !!

Classe, metodo e atributo sim !!! Claro pô é objeto !! Casseta !!

Mais não consigo entender exatamente algumas coisas.

Look at this !!


java code
package tiexpert;

public class Eletrodomestico {
private boolean ligado;
private int voltagem;
private int consumo;

public Eletrodomestico(boolean ligado, int voltagem, int consumo) {
this.ligado = ligado;
this.voltagem = voltagem;
this.consumo = consumo;
}
// (...)
}

package tiexpert;

public class TV extends Eletrodomestico {
private int canal;
private int volume;
private int tamanho;

public TV(int voltagem, int consumo, int canal, int volume, int tamanho) {
super(false, voltagem, consumo);
this.canal = canal;
this.volume = volume;
this.tamanho = tamanho;
}
//(...)
}


package tiexpert;

public class ExemploHeranca {
public static void mostrarCaracteristicas(TV obj) {
System.out.print("Esta TV tem as seguintes características:\n"
+ "Tamanho: " + obj.getTamanho() + "\"\n"
+ "Voltagem Atual: "+ obj.getVoltagem() + "V\n"
+ "Consumo/h: " + obj.getConsumo() + "W\n");
if (obj.isLigado()) {
System.out.println("Ligado: Sim\n"
+ "Canal: " + obj.getCanal() + "\n"
+ "Volume: " + obj.getVolume()+"\n");
} else {
System.out.println("Ligado: Não\n");
}
}

public static void main(String args[]) {
TV tv1 = new TV(110, 95, 0, 0, 21);
TV tv2 = new TV(220, 127, 0, 0, 29);
tv2.setLigado(true);
tv2.setCanal(3);
tv2.setVolume(25);
mostrarCaracteristicas(tv1);
mostrarCaracteristicas(tv2);
}
}


O código acima irá mostrar o seguinte resultado:

Esta TV tem as seguintes características:
Tamanho: 21"
Voltagem Atual: 110V
Consumo/h: 95W
Ligado: Não

Esta TV tem as seguintes características:
Tamanho: 29"
Voltagem Atual: 220V
Consumo/h: 127W
Ligado: Sim
Canal: 3
Volume: 25

System.out.print("Esta TV tem as seguintes características:\n" + "Tamanho: " + obj.getTamanho() + "\"\n" + "Voltagem Atual: "+ obj.getVoltagem() + "V\n" + "Consumo/h: " + obj.getConsumo() + "W\n");

veja que , system out OK
Que vai escrever OK
agora.

obj.getVoltagem()

Que sintaxi louca é esta, eu não vi isso em lugar algum!!

to apanhando feito louco !!

Re: C o caramba !! Nem C++/#.

MensagemEnviado: 26 Jun 2013 10:01
por Red Neck Guy
Eu desisti do C# mas não do dotnet. Estou utilizando c++ gerenciado nos novos projetos. O legal é que dá pra mesclar código não gerenciado com gerenciado e aí codificando as coisas corretamente - fazendo o desacoplamento da plataforma - posso utilizar os mesmos fontes que utilizo com os mcus nas aplicações para computador.

Re: C o caramba !! Nem C++/#.

MensagemEnviado: 26 Jun 2013 10:37
por tcpipchip
Vais apanhar mais ainda quando estudar linguagens declarativas e linguagens de pilha, como exemplo PROLOG e FORTH.

Mas, qual a duvida do código acima ?

acredito que a primeira duvida é pq "Eletrodomestico" se repete...o primeiro é a declaracao da classe e o segundo é metodo construtor, que atribui valores para os atributos da classe quando voce instancia um objeto desta classe (new)

Java é loucura, eu programei 31 anos estruturado...ao ver JAVA...ihhh...foi dificil....mas....estou enferrujado...

Eu fiz alguns programas em JAVA PIC...


TCPIPCHIP

Re: C o caramba !! Nem C++/#.

MensagemEnviado: 26 Jun 2013 11:38
por tcpipchip
Fabim, desiste do JAVA. Não ponha em risco os equipamentos de apoio à vida. :twisted:

Anexo comentários

Código: Selecionar todos
//classe base que define as caracteristicas básicas de um objeto eletrodoméstico
public class Eletrodomestico {

    /* Atributos da classe (atributos devem ser visíveis somente dentro da
     * própria classe (na maioria das vezes), por isso são declaradas com
     * visibilidade private)*/
    //a semântica da declaração é: visibilidade + tipo + nome do atributo
    private boolean ligado;
    private int voltagem;
    private int consumo;

    /* Metodo construtor (O metodo contrutor deve possuir o mesmo nome da classe,
     * podendo ou não ter argumentos(parametro) na sua assinatura)
     * abaixo o construtor com tres argumentos(ligado, voltagem, consumo)
     */
    public Eletrodomestico(boolean ligado, int voltagem, int consumo) {
        /* Operador this.nome_variavel é para indicar que se trata
         * de um atributo desta classe.
         */
        this.ligado = ligado;       //operação de atribuição
        this.voltagem = voltagem;   //operação de atribuição   
        this.consumo = consumo;     //operação de atribuição
    }

    /*
     * METODOS ACESSORES (GETTER'S and SETTER'S) - São metodos que manipulam os
     * atributos desta classe, realizam atribuição e tornam possivel que valores
     * dos atributos sejam visualizados por outros objetos. Metodos que iniciam
     * com set realizam atribuição, metodos que iniciam com get retornam o valor
     * do respectivo atributo.
     */
   
    //a assinatura do metodo consiste: visibilidade + retorno + nome+ parametro(se houver)
    public boolean isLigado() {//retorna o estado(valor) do atributo ligado
        return ligado;
    }

    //a assinatura do metodo consiste: visibilidade + retorno + nome+ parametro(se houver)
    //void indica que o metodo não possui retorno
    public void setLigado(boolean ligado) {//atribui um valor ao atributo ligado
        this.ligado = ligado;
    }

    public int getVoltagem() {
        return voltagem;
    }

    public void setVoltagem(int voltagem) {
        this.voltagem = voltagem;
    }

    public int getConsumo() {
        return consumo;
    }

    public void setConsumo(int consumo) {
        this.consumo = consumo;
    }
   
}//fim class


Código: Selecionar todos
/**
 * Essa classe apenas demonstra a o recurso de herança.
 * A Herança é um relação de é um, ou seja uma tv é um eletrodomestico
 */
public class ExemploHeranca {

    /*
     * Esse metodo recebe um objeto do tipo TV e printa na console as suas
     * caracteristicas, lembrando que uma TV é um Eletrodomestico, os metodos
     * da classe Eletrodomestico também estarão acessiveis a partir do objeto TV.
     * Sendo possivel ver saber se a tv esta ligada, qual a sua tensão.
     */
    public static void mostrarCaracteristicas(TV obj) {
        System.out.print("Esta TV tem as seguintes características:\n"
                + "Tamanho: " + obj.getTamanho() + "\"\n"
                + "Voltagem Atual: " + obj.getVoltagem() + "V\n"
                + "Consumo/h: " + obj.getConsumo() + "W\n");
        if (obj.isLigado()) {
            System.out.println("Ligado: Sim\n"
                    + "Canal: " + obj.getCanal() + "\n"
                    + "Volume: " + obj.getVolume() + "\n");
        } else {
            System.out.println("Ligado: Não\n");
        }//fim else 
    }

    public static void main(String args[]) {
        TV tv1 = new TV(110, 95, 0, 0, 21); //instancia um novo objeto da classe TV
        TV tv2 = new TV(220, 127, 0, 0, 29);//instancia um novo objeto da classe TV
        tv2.setLigado(true);//atribui um valor ao atributo ligado do objeto tv2
        tv2.setCanal(3);    //atribui um valor ao atributo canal do objeto tv2
        tv2.setVolume(25);  //atribui um valor ao atributo volume do objeto tv2
        mostrarCaracteristicas(tv1);//exibe na console as caracteristicas do objeto tv1
        mostrarCaracteristicas(tv2);//exibe na console as caracteristicas do objeto tv2
    }
}


Código: Selecionar todos
/*
 * A classe TV define as caracteristicas desses objetos, mas herdam as
 * caracteristicas da classe eletrodomestico, assim uma tv possui todas as
 * caracteristicas de um eletrodomestico mais as caracteristicas de uma tv
 *
 * A herança é indicada pela utilizaçao da palavra reservada extends na
 * assinatura do metodo seguida da classe que sera herdada
 */

public class TV extends Eletrodomestico {

    //atributos da classe tv
    private int canal;
    private int volume;
    private int tamanho;

    //metodo construtor
    public TV(int voltagem, int consumo, int canal, int volume, int tamanho) {
        /*
         * O metodo super() chama o construtor da classe mãe desta classe, neste
         * caso a classe Eletrodomestico, e nele são passados os parametros
         * necessarios no construtor da classe eletrodomesticos.
         * Caso não se chame o metodo super(), o ambiente informara um erro.
         */
        super(false, voltagem, consumo);
        this.canal = canal;     
        this.volume = volume;
        this.tamanho = tamanho;
    }

    //METODOS ACESSORES
    public int getCanal() {
        return canal;
    }

    public void setCanal(int canal) {
        this.canal = canal;
    }

    public int getVolume() {
        return volume;
    }

    public void setVolume(int volume) {
        this.volume = volume;
    }

    public int getTamanho() {
        return tamanho;
    }

    public void setTamanho(int tamanho) {
        this.tamanho = tamanho;
    }
   
}//fim class

Re: C o caramba !! Nem C++/#.

MensagemEnviado: 26 Jun 2013 11:44
por KrafT
tcpipchip escreveu:Fabim, desiste do JAVA.



Meu, que heresia...

=======================

Eu havia entendido que o Fabim queria criar uma stream de uma estrutura...
Boa explicação, TCP. Meu filho quer aprender Java, vou passar isso para ele. Se ele continuar com o interesse, é mais um caso perdido.

Re: C o caramba !! Nem C++/#.

MensagemEnviado: 26 Jun 2013 12:17
por fabim
Então psual.
JAVA é para ANDROID !!

para os equipos é tudo ANSI C E ASM !!

look.
TOC TOC !!
QUEM BATE ?
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
É o java !!!

Só quero entender alguns detalhes o tal do get e set, e estrutura.

Re: C o caramba !! Nem C++/#.

MensagemEnviado: 26 Jun 2013 12:23
por Red Neck Guy
KrafT escreveu:
tcpipchip escreveu:Fabim, desiste do JAVA.



Meu, que heresia...

=======================

Eu havia entendido que o Fabim queria criar uma stream de uma estrutura...
Boa explicação, TCP. Meu filho quer aprender Java, vou passar isso para ele. Se ele continuar com o interesse, é mais um caso perdido.



Vocês sabiam que é o TCP que nivela a quantidade de programadores Java aqui na região? O piazada morre de medo da disciplina dele e saí correndo do curso quando ele começa a mostrar o lado obscuro da computação.

Re: C o caramba !! Nem C++/#.

MensagemEnviado: 26 Jun 2013 12:30
por andre_luis
KrafT escreveu:
tcpipchip escreveu:Fabim, desiste do JAVA.


Meu, que heresia...


Fabim,

Quanto á criação de ponteiros no JAVA, não sou especialista para dizer que não dá, mas sei que é fortemente não-recomendado.
E a minha opinião de programador de uC em baixo nível ( C e ASM ), é que é uma ferramenta muito interessante para trabalhos rápidos.

Um fórum brasileiro voltado para essa área que já me ajudou algumas vezes é o GUJ e lá só tem animal nessa área.
Inclusive, tem uma pergunta exatamente igual á sua : struct em Java???


+++

Re: C o caramba !! Nem C++/#.

MensagemEnviado: 26 Jun 2013 12:32
por Red Neck Guy
O erro aqui é tentar já sair fazendo as coisas sem entender os conceitos. O interessante seria inicialmente estudar orientação a objetos, depois ir evoluindo aos poucos. Mas sei lá, tem gente que gosta de abrir no último capítulo já ir vendo um exemplo com herança, polimorfismo, templates e reflexão. Aí não tem como não...
Embora no final das contas não seja difícil, são muitos conceitos novos para ser vistos numa tacada só.

Re: C o caramba !! Nem C++/#.

MensagemEnviado: 26 Jun 2013 12:34
por tcpipchip
Aquino, o certo mesmo é começar com ANALISE ORIENTADA A OBJETOS, estou certo ?

Re: C o caramba !! Nem C++/#.

MensagemEnviado: 26 Jun 2013 12:34
por fabim
poisé Andre.
Vou ter que fazer algo idiota mesmo, e perder um **** tempo de processo para ficar alocando dados do buffer cada um no seu quadrado !! KIPARRRIU !!

Re: C o caramba !! Nem C++/#.

MensagemEnviado: 26 Jun 2013 12:48
por Red Neck Guy
tcpipchip escreveu:Aquino, o certo mesmo é começar com ANALISE ORIENTADA A OBJETOS, estou certo ?


Certíssimo.