![]() |
|
||||
|
|||||
Você está aqui: Cards de Python |
||
|
||
|
|
||
Java ::: Reflection (introspecção) e RTI (Runtime Type Information) ::: Passos Iniciais |
Java Reflection - Como obter um objeto Class usando os métodos getClass() e forName() da classe Class da linguagem JavaQuantidade de visualizações: 10870 vezes |
|
Uma das tarefas mais básicas que devemos fazer quando estamos usando reflexão em Java, é obter um objeto Class. Uma vez que tenhamos uma instância de Class, podemos obter várias informações sobre uma classe, até mesmo manipulá-la. Nesta dica veremos como usar o método getClass() para obter um objeto Class. Esta forma de obter um objeto Class é frequentemente útil em situações nas quais temos uma instância de uma classe, mas não sabemos a qual classe esta instância pertence (instanceOf). Há várias formas de se obter um objeto Class. Se você tiver uma classe para a qual o nome de tipo é conhecido em tempo de compilação, há uma forma ainda mais fácil de se obter uma intância da classe. Só precisamos usar a palavra chave do compilador .class. Veja: Class classe = JButton.class; Se o nome da classe não foi conhecido em tempo de compilação, mas estiver disponível em tempo de execução (runtime), podemos usar o método forName() para obter um objeto Class. O código a seguir mostra como criar um objeto Class associado à classe javax.swing.JPanel:
try{
Class classe = Class.forName("javax.swing.JPanel");
}
catch(ClassNotFoundException e){
// trate os erros aqui
}
Podemos usar também o método getSuperClass() em um objeto Class para obter o objeto Class representando a superclasse da classe que está sofrendo introspecção. O trecho de código a seguir mostra como o objeto classe1 reflete a classe JTextField, e classe2 reflete a classe JTextComponent, uma vez que esta classe é a superclasse de JTextField: JTextField txtNome = new JTextField(); Class classe1 = txtNome.getClass(); Class classe2 = classe1.getSuperclass(); Esta dica foi revisada e atualizada para o Java 8. |
C++ ::: STL (Standard Template Library) ::: Vector C++ |
Como obter um iterador para o primeiro ou último elemento de um vector C++ usando as funções begin() e end()Quantidade de visualizações: 8085 vezes |
|
Há situações em nossos códigos que precisamos obter uma referência ao primeiro ou último elemento de um vector e usar tal referência para acessar os demais elementos. Isso pode ser feito com um iterador. Assim, para obter um iterador para o primeiro elemento nós podemos usar a função begin(), que retorna duas formas de iteradores: iterator begin(); const_iterator begin() const; A primeira versão retorna um iterador que pode ser usado, não somente para acessar os elementos do vector, como também para alterar seus valores. Veja no trecho de código abaixo como obtemos um iterador para o primeiro elemento e o incrementamos de forma a atingir o último elemento:
#include <iostream>
#include <vector>
using namespace std;
int main(int argc, char *argv[]){
// um vector vazio que conterá inteiros
vector<int> valores;
// vamos inserir três elementos
valores.push_back(54);
valores.push_back(13);
valores.push_back(87);
// vamos obter um iterador para o primeiro elemento
vector<int>::iterator it = valores.begin();
// vamos mostrar o valor atual do iterador
cout << "Valor atual do iterador: " << *it << endl;
// vamos adiantar o iterador duas vezes
it += 2;
// vamos mostrar o novo valor do iterador
cout << "Novo valor do iterador: " << *it << endl;
system("PAUSE"); // pausa o programa
return EXIT_SUCCESS;
}
É importante lembrar que podemos alterar os valores dos elementos de um vector por meio do iterador. Veja:
#include <iostream>
#include <vector>
using namespace std;
int main(int argc, char *argv[]){
// um vector vazio que conterá inteiros
vector<int> valores;
// vamos inserir três elementos
valores.push_back(54);
valores.push_back(13);
valores.push_back(87);
// vamos obter um iterador para o primeiro elemento
vector<int>::iterator it = valores.begin();
// vamos atribuir um novo valor ao primeiro elemento
*it = 128;
// vamos mostrar o novo valor do primeiro elemento
cout << "Novo valor do primeiro elemento: " << valores.front() << endl;
system("PAUSE"); // pausa o programa
return EXIT_SUCCESS;
}
Mas, e se quiséssemos evitar tal alteração? Bastaria usar um iterador constante: // vamos obter um iterador constante para o primeiro elemento vector<int>::const_iterator it = valores.begin(); Faça esta alteração no código anterior e verá que o programa não mais compila. A mensagem de erro de compilação indica: assignment of read-only location Vamos agora obter um iterador para o último elemento. Para isso podemos usar a função end(). Veja: iterator end(); const_iterator end() const; É importante notar que end() retorna um iterador para o elemento APÓS o último elemento do vector. Veja no trecho de código abaixo como obtemos um iterador para o último elemento:
#include <iostream>
#include <vector>
using namespace std;
int main(int argc, char *argv[]){
// um vector vazio que conterá inteiros
vector<int> valores;
// vamos inserir três elementos
valores.push_back(54);
valores.push_back(13);
valores.push_back(87);
// vamos obter um iterador para o último elemento
vector<int>::iterator it = valores.end();
// como end() retorna um iterador para um elemento
// APÓS o último elemento do vector, temos que voltar
// um elemento para acessarmos de fato o último elemento
it--;
// vamos mostrar o valor atual do iterador
cout << "Valor do iterador: " << *it << endl;
system("PAUSE"); // pausa o programa
return EXIT_SUCCESS;
}
Um dos usos mais comuns dos iteradores begin() e end() é quando queremos percorrer todos os elementos de um vector. Veja:
#include <iostream>
#include <vector>
using namespace std;
int main(int argc, char *argv[]){
// um vector vazio que conterá inteiros
vector<int> valores;
// vamos inserir três elementos
valores.push_back(54);
valores.push_back(13);
valores.push_back(87);
// vamos percorrer o vector e exibir os elementos
vector<int>::iterator it;
for(it = valores.begin(); it < valores.end(); it++){
cout << *it << endl;
}
system("PAUSE"); // pausa o programa
return EXIT_SUCCESS;
}
|
Delphi ::: Dicas & Truques ::: Data e Hora |
Como adicionar ou subtrair meses de uma data em Delphi usando a função IncMonth()Quantidade de visualizações: 22062 vezes |
|
Em algumas situações precisamos adicionar ou subtrair meses de uma determinada data. Em Delphi isso pode ser feito com o auxílio da função IncMonth() da unit DateUtils. Este função aceita um TDateTime e a quantidade de meses que queremos acrescentar ao TDateTime fornecido como argumento. O retorno será um novo TDateTime com a quantidade de meses acrescida. Veja um trecho de código no qual adicionamos 2 meses à data atual:
procedure TForm1.Button1Click(Sender: TObject);
var
hoje: TDateTime;
begin
// não esqueça de adicionar DateUtils ao seus uses
// vamos obter a data de hoje
hoje := Now;
// vamos exibir a data de hoje
ShowMessage('Hoje é: ' + DateToStr(hoje));
// vamos adicionar 2 meses à data de hoje
hoje := IncMonth(hoje, 2);
// vamos exibir o resultado
ShowMessage('Daqui a 2 meses será: ' + DateToStr(hoje));
end;
É possível também usar a função IncMonth() para substrair meses de uma data. Para isso só precisamos fornecer uma quantidade negativa de meses. Veja:
procedure TForm1.Button1Click(Sender: TObject);
var
hoje: TDateTime;
begin
// não esqueça de adicionar DateUtils ao seus uses
// vamos obter a data de hoje
hoje := Now;
// vamos exibir a data de hoje
ShowMessage('Hoje é: ' + DateToStr(hoje));
// vamos subtrair 3 meses da data de hoje
hoje := IncMonth(hoje, -3);
// vamos exibir o resultado
ShowMessage('Há 3 meses era: ' + DateToStr(hoje));
end;O valor padrão para o segundo argumento de IncMonth() é 1. Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Java ::: Java + MySQL ::: Metadados da Base de Dados (Database Metadata) |
Java MySQL - Como obter uma lista das funções de data e hora suportadas pelo MySQL usando o método getTimeDateFunctions() da interface DatabaseMetaDataQuantidade de visualizações: 5752 vezes |
|
Em algumas situações gostaríamos de, via código, obter uma lista das funções de data e hora suportadas pelo MySQL. Para isso podemos usar o método getTimeDateFunctions() da interface DatabaseMetaData. É importante observar que, no Sun Microsystem's JDBC Driver for MySQL, a interface DatabaseMetaData é implementada por uma classe do mesmo nome, no pacote com.mysql.jdbc.DatabaseMetaData. E esta classe implementa o método getTimeDateFunctions() de forma a retornar a lista de funções de data e hora separadas por vírgulas. Veja um trecho de código Java no qual listamos todas as funções de data e hora suportados no MySQL 5.0:
package estudosbancodados;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.SQLException;
public class EstudosBancoDados{
public static void main(String[] args) {
// strings de conexão
String databaseURL = "jdbc:mysql://localhost/estudos";
String usuario = "root";
String senha = "osmar1234";
String driverName = "com.mysql.jdbc.Driver";
try {
Class.forName(driverName).newInstance();
Connection conn = DriverManager.getConnection(databaseURL, usuario, senha);
// vamos obter um objeto da classe com.mysql.jdbc.DatabaseMetaData
DatabaseMetaData dbmd = conn.getMetaData();
// vamos obter a lista de funções de data e hora disponíveis
// nesta versão do MySQL
String funcoesDataHora = dbmd.getTimeDateFunctions();
// como a lista de funções está separada por vírgulas, vamos obter
// uma matriz de strings
String funcoes[] = funcoesDataHora.split(",");
// vamos mostrar o resultado
for(int i = 0; i < funcoes.length; i++){
System.out.println(funcoes[i]);
}
}
catch (SQLException ex) {
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
}
catch (Exception e) {
System.out.println("Problemas ao tentar conectar com o banco de dados: " + e);
}
}
}
Ao executarmos este código teremos o seguinte resultado: DAYOFWEEK WEEKDAY DAYOFMONTH DAYOFYEAR MONTH DAYNAME MONTHNAME QUARTER WEEK YEAR HOUR MINUTE SECOND PERIOD_ADD PERIOD_DIFF TO_DAYS FROM_DAYS DATE_FORMAT TIME_FORMAT CURDATE CURRENT_DATE CURTIME CURRENT_TIME NOW SYSDATE CURRENT_TIMESTAMP UNIX_TIMESTAMP FROM_UNIXTIME SEC_TO_TIME TIME_TO_SEC |
C# ::: Dicas & Truques ::: Data e Hora |
Como exibir a data atual completa e as horas no formato curto em C# usando o sinalizador {0:f} da função Format() da classe StringQuantidade de visualizações: 3 vezes |
|
Nesta dica mostrarei como usar o sinalizador {0:f} da função Format() da classe String para exibir a data completa e as horas no formato curto, algo como "quarta-feira, 16 de março de 2022 11:19". Veja o código C# completo:
using System;
namespace Estudos {
class Program {
static void Main(string[] args) {
// vamos obter a data e hora atual
DateTime dataHora = DateTime.Now;
// vamos exibir a data completa e as hora no formato curto
System.Console.WriteLine("Hoje é: {0:f}", dataHora);
Console.WriteLine("\n\nPressione uma tecla para sair...");
Console.ReadKey();
}
}
}
Ao executar este código C# nós teremos o seguinte resultado: Hoje é: quarta-feira, 16 de março de 2022 11:19 Veja que aqui eu mostrei a data e as horas diretamente na saída do programa. Podemos usar uma variável intermediária também. Veja:
using System;
namespace Estudos {
class Program {
static void Main(string[] args) {
// vamos obter a data e hora atual
DateTime dataHora = DateTime.Now;
// vamos guardar a data completa e as hora no formato curto
string dataHoraStr = String.Format("{0:f}", dataHora);
System.Console.WriteLine("Hoje é: " + dataHoraStr);
Console.WriteLine("\n\nPressione uma tecla para sair...");
Console.ReadKey();
}
}
}
|
Desafios, Exercícios e Algoritmos Resolvidos de C# |
Veja mais Dicas e truques de C# |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |





