30 agosto 2010

Programando para BADA (samsung)

Estou desenvolvendo aplicações aqui no C.E.S.A.R usando a plataforma Bada (c++). Já fiz algumas aplicações e estou achando legal e interessante essa plataforma mobile. Neste post, falarei um pouco sobre Bada para curiosos.

O que é Bada?
Bada significa oceano (na Korea), no qual a Samsung acredita que essa tecnologia permitirá um oceano de novas aplicações.

"Samsung bada is a new smartphone platform that allows developers to create feature-rich applications that elevate the user experience in mobile spaces." (documentação do SDK). Ou seja, uma plataforma para dispositivos smartphones da Samsung para desenvolver aplicativos mais ricos, tal como os aplicativos do iPhone.

Visão da Samsung sobre Bada (fonte: http://www.bada.com/whatisbada/)

A Samsung espera que sua tecnologia venha ter uma fatia de mercado considerável no futuro, uma vez que os celulares menos afortunados (conhecidos como features phones) tendem a ser substituidos por smartphones. Além disso, quer competir com iPhone (Apple) e Android (OHA).
...

Para conseguir atingir essa meta eles criaram um ecossistema parecido (pra não dizer igual) ao modelo de negócio da Apple (AppleStore). Neste modelo o desenvolvedor pode fazer aplicativos para usuários, podendo disponibilizar na loja da Samsung (http://www.samsungapps.com/).

Para entender o ciclo em detalhes consulte a fonte: http://www.bada.com/whatisbada/ecosystem/

Dispositivo WAVE
A samsung lançou o dispositivo W.A.V.E (http://www.bada.com/badadevices/) que possui um bom hardware e pode ser comparado com iPhone 4 (em teoria).





Para saber mais:

Em resumo, a tecnologia Bada é uma plataforma promissora de desenvolvimento, equivalente ao modelo iPhone (embora com mercado insignificante ainda), que permite os desenvolvedores fazerem aplicações e podendo ser remunerados tal como o modelo da Apple. Próximos posts vou abordar alguns exemplos e problemas que já tive com Bada.


17 agosto 2010

Inscrições para Residência em Bada da Samsung e C.E.S.A.R

Prorrogadas inscrições para Residência em Bada da Samsung e C.E.S.A.R
(notícia informada pelo C.E.S.A.R.)

A Samsung e o C.E.S.A.R prorrogaram o prazo de inscrições para seleção no Programa de Residência em Desenvolvimento de aplicações móveis na plataforma SAMSUNG BADA. O valor da bolsa de estudos oferecida para os residentes durante o programa, que terá duração de sete meses, é de R$ 1.800. Para participar do processo seletivo, os interessados devem encaminhar currículo e histórico escolar para residenciabada@cesar.org.br.

O curso é direcionado para graduados ou alunos cursando o último semestre de formação nos cursos da área de computação com conhecimento nas linguagens C e C++. Interessados de qualquer parte do país podem se candidatar. As atividades acontecem presencialmente na sede do C.E.S.A.R, no Recife. Para mais informações, o edital está disponível no endereço eletrônico www.cesar.org.br/bada.pdf.

A Residência utiliza a metodologia de design centrado no usuário e se baseia no conceito de Residência em Software, fornecendo aos alunos um mecanismo inovador de capacitação ao mesmo tempo em que funciona como um catalisador de experiência.

Durante a execução do projeto, os alunos da residência estarão inseridos no ambiente profissional do C.E.S.A.R e, com o acompanhamento de tutores, utilizarão o conhecimento adquirido no curso para desenvolver software para celulares que utilizem a plataforma BADA. A carga horária total é de 976 horas, divididas em 176 horas de aulas conceituais e 800 horas de prática assistida e coaching intensivo.

12 abril 2010

Usando ARRAY em Java para cadastro de clientes

Existem várias possibilidades para o uso de arrays. Elaborei um exemplo para demonstrar a utilização aplicando sobre um cadastro de clientes. Objetivo deste exemplo é mostrar uma maneira de utilizar array com Java.


Para saber o que é um array veja a definição da Wikipédia sobre array. Os principais pontos que devem ser observados para entender o uso de Array em Java na minha opinião são:
  • Um array em Java precisa ser declarado usando os colchetes ( [ ] );
  • O caso mais comum do uso de array requer que este seja inicializado (alocar memória) e neste momento, deve-se informar o seu tamanho; Ex. String[] listaClientes = new String[quantidade];
  • Para acessar os dados do array basta usar os colchetes, seguido por seu índice. Ex. listaClientes[i] = JOptionPane.showInputDialog("Nome do cliente "+(i+1));
  • Quando um array for criado na memória ele será inicializado com valores default do tipo de dados conforme o tipo de sua declaração. Ou seja, um array de tipo String terá valor null em cada elemento disponível até que seja atribuído outro valor String. Se for tipo primitivo int, o valor default é 0 (zero) para cada elemento; float será 0.0 e assim sucessivamente;
  • Para determinar o tamanho do array de forma dinâmica devemos usar o atributo length. Ex. listaClientes.length
  • Para recuperar os valores devemos usar o seu índice. Veja a ilustração acima. Ex. listaClientesTemporario += listaClientes[i] + "\n"
O programa a seguir utiliza um exemplo para cadastrar clientes e recuperar os seus dados cadastrados na memória. Tentei levar em consideração todos os pontos mencionados.




 

import javax.swing.JOptionPane;

/**

* Esse programa visa exemplificar a utilização de array, aplicando sobre um

* cadastro de clientes.

*

* @author Douglas Daniel Del Frari

*/

public class CadastroClientes {

// array de clientes

private static String[] listaClientes;

private static String menu = "CADASTRO CLIENTES\n\n" +

"1 --> Cadastrar clientes\n" +

"2 --> Listar clientes\n" +

"3 --> Sair";

/**

* Método inicial das aplicações Java SE

* @param args argumentos opcionais

*/

public static void main(String[] args) {

// escolha do usuario

String opcao = "";

do {

opcao = JOptionPane.showInputDialog(menu);

if (opcao.equals("1")) {

// cadastrar clientes

cadastrarClientes();

} else if (opcao.equals("2")) {

// listar clientes

listarClientes();

}

} while (!opcao.equals("3")); // comparacao usando String

} // fim do main

/**

* Lista os clientes cadastrados no ARRAY.

*/

private static void listarClientes() {

if (listaClientes!=null) {

// acumula a listagem numa variavel local

String listaClientesTemporario = "Lista de Clientes \n\n";

for (int i = 0; i < listaClientes.length; i++) {

listaClientesTemporario += listaClientes[i] + "\n";

}

// exibe na tela a listagem de clientes

JOptionPane.showMessageDialog(null,listaClientesTemporario);

} else {

// se nao tiver clientes o ARRAY será null, entao pode-se tratar com

// uma mensagem personalizada.

JOptionPane.showMessageDialog(null,

"É necessário realizar cadastro de clientes primeiro");

}

}

/**

* Esse metodo cadastra os usuarios na quantidade

* informada pelo usuario.

*/

private static void cadastrarClientes() {

// utiliza o metodo showInputDialog para perguntar a quantidade e

// converte o valor de String para inteiro e armazena na variavel

// local quantidade.

int quantidade = Integer.parseInt(JOptionPane

.showInputDialog("Quantos clientes deseja cadastrar?"));

// inicializa o ARRAY com tamanho informado pelo usuario

listaClientes = new String[quantidade];

// percorre todo tamanho do ARRAY e cadastra seus elementos

for (int i = 0; i < quantidade; i++) {

listaClientes[i] = JOptionPane.showInputDialog("Nome do cliente "+(i+1));

}

JOptionPane.showMessageDialog(null, "Clientes cadastrados");

}

} // fim da classe



Considerações
Observe que o exemplo propõe utilizar uma variável global (atributo listaClientes) que é um tipo array de String. Isto porque utilizou-se métodos que são utilizados forá do escopo do método principal (main). Além disso, propomos utilizar uma interface gráfica usando a classe JOptionPane e dois dos seus métodos estáticos (showMessageDialog para exibir dados e showInputDialog para fazer a entrada de dados do usuário).

O array foi inicializado somente após o usuário determinar a quantidade de clientes a ser cadastrada. Assim podemos percorrer o cadastro de cada cliente até o fim do array (ver o método cadastrarClientes()). Se o usuário optar pela visualização da listagem de clientes antes de cadastrar algum cliente, optamos por mostrar uma mensagem para alertar que é necessário realizar o cadastro antes de listar (basta verificar se o array não está nulo - if (listaClientes!=null))

Essa solução não leva em consideração possíveis erros do usuário. Por exemplo, se no momento de informar a quantidade de clientes a ser cadastrada ele colocar um valor que não pode ser convertido para inteiro (ex. um caracter qualquer), teremos um erro de lógica e uma exceção será gerada. Neste caso precisaríamos usar um tratamento de exceção (try/catch).

Questões para debate
  1. Por que foi utilizado uma variável do tipo String para pegar a opcão de escolha do usuário durante a exibição da menu principal? Qual a diferença se usássemos o tipo inteiro?
  2. Modularizar o programa em partes menores trás algumas vantagens? Quais?
  3. O que acontece quando acabar o espaço deste tamanho (quantidade)?