Lista de Exercícios Resolvidos: Java | Python | VisuAlg | Portugol | C | C# | VB.NET | C++
Você está aqui: Python ::: Dicas & Truques ::: Programação Orientada a Objetos

Como usar herança em Python - Programação Orientada a Objetos em Python

Quantidade de visualizações: 722 vezes
Herança é uma dos três principios fundamentais da programação orientada a objetos porque ela permite a criação de hierarquia nos objetos que compõem o sistema. Em Python, uma classe que tem seus dados e métodos herdados por outra é chamada de classe base ou super classe e a classe que herda tais dados é chamada de classe derivada ou sub-classe.

O que um aluno, um professor e um funcionário possuem em comum? Todos eles são pessoas e, portanto, compartilham alguns dados comuns. Todos têm nome, idade, endereço, etc. E, o que diferencia um aluno de uma outra pessoa qualquer? Um aluno possui uma matrícula; Um funcionário possui um código de funcionário, data de admissão, salário, etc; Um professor possui um código de professor e informações relacionadas à sua formação.

É aqui que a herança se torna uma ferramenta de grande utilidade. Podemos criar uma classe Pessoa, que possui todos os atributos e métodos comuns a todas as pessoas e herdar estes atributos e métodos em classes mais específicas, ou seja, a herança parte do geral para o mais específico. Comece criando uma classe Pessoa como mostrado no código a seguir:

class Pessoa:
  # construtor da classe
  def __init__(self, nome, idade):
......


Esta classe possui os atributos nome e idade. Estes atributos são comuns a todas as pessoas. Veja agora como podemos criar uma classe Aluno que herda estes atributos da classe Pessoa e inclui seu próprio atributo, a saber, seu número de matrícula. Eis o código:

 
class Aluno(Pessoa):
  def __init__(self, nome, idade, matricula):
......


Observe que, em Python, a herança é indicada pela passagem do nome da super classe entre parênteses na definição da subclasse. A classe Aluno agora possui três atributos: nome, idade e matricula. Veja uma aplicação demonstrando este relacionamento:

class Pessoa:
  # construtor da classe
  def __init__(self, nome, idade):
    self.nome = nome
    self.idade = idade

class Aluno(Pessoa):
  def __init__(self, nome, idade, matricula):
    super().__init__(nome, matricula)
    self.matricula = matricula

def main():
  nome = "Osmar J. Silva"
......


A herança nos fornece um grande benefício. Ao concentrarmos características comuns em uma classe e derivar as classes mais específicas a partir desta, nós estamos preparados para a adição de novas funcionalidades ao sistema. Se mais adiante uma nova propriedade comum tiver que ser adicionada, não precisaremos efetuar alterações em todas as classes. Basta alterar a superclasse e pronto. As classes derivadas serão automaticamente atualizadas.

Link para compartilhar na Internet ou com seus amigos:

Delphi ::: Dicas & Truques ::: Data e Hora

Como obter a quantidade de dias para um determinado ano usando a função DaysInAYear() do Delphi

Quantidade de visualizações: 11215 vezes
Quando estamos trabalhando com datas, geralmente precisamos saber a quantidade de dias que um determinado ano possui, ou seja, alguns anos possuem 365 dias, outros possuem 366. A unit DateUtils possui uma função chamada DaysInAYear() que serve para este propósito. Ela aceita um inteiro representando o ano desejado e retorna um inteiro representando a quantidade de dias que tal ano possui. Veja o exemplo:

procedure TForm1.Button1Click(Sender: TObject);
var
  ano, dias_ano: Integer;
begin
  ano := 2010;

  // vamos obter a quantidade de dias para o
  // ano de 2010
......


Este trecho de código nos informará que o ano de 2010 possui 365 dias. Note que o argumento para a função DaysInAYear() deve estar entre 1 e 9999 (inclusive).

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 os tipos de dados suportados pelo MySQL e seus correspondentes JDBC usando o método getTypeInfo() da interface DatabaseMetaData

Quantidade de visualizações: 5805 vezes
Em algumas situações precisamos obter os tipos de dados suportados pelo MySQL e mapeá-los para seus correspondentes JDBC. Esta não é uma tarefa fácil, mas que, com uma pequena ajuda dos recursos de reflexão do Java, pode ser realizada depois de algumas xícaras de café.

O primeiro passo é obter os tipos de dados suportados pelo MySQL com uma chamada ao método getTypeInfo() da interface DatabaseMetaData. Os campos do ResultSet que nos interessam são TYPE_NAME e DATA_TYPE. TYPE_NAME traz o nome do tipo de dados no MySQL enquanto DATA_TYPE traz o tipo JDBC correspondente como um inteiro. Assim, o que temos que fazer é usar reflexão para obter todos os campos da classe java.sql.Types e efetuar um mapeamento entre os tipos.

Veja o código completo para o exemplo:

package estudosbancodados;

import java.lang.reflect.Field;
import java.sql.*;
import java.util.HashMap;
import java.util.Map;

public class EstudosBancoDados{
  static Map mapa; // usado para mapear os tipos JDBC
  
  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 os tipos de dados suportados por esta versão do MySQL
      // e seus correspondentes JDBC
      ResultSet tiposDados = dbmd.getTypeInfo();
      while(tiposDados.next()){
        System.out.println("MySQL: " + tiposDados.getString("TYPE_NAME") + " - JDBC: " 
          + getJdbcTypeName(Integer.parseInt(tiposDados.getString("DATA_TYPE"))));
      }
      
      // vamos fechar o ResultSet
      tiposDados.close();
    }
    catch (SQLException ex) {
      System.out.println("SQLException: " + ex.getMessage());
......


O resultado da execução deste código foi:

MySQL: BIT - JDBC: BIT
MySQL: BOOL - JDBC: BIT
MySQL: TINYINT - JDBC: TINYINT
MySQL: TINYINT UNSIGNED - JDBC: TINYINT
MySQL: BIGINT - JDBC: BIGINT
MySQL: BIGINT UNSIGNED - JDBC: BIGINT
MySQL: LONG VARBINARY - JDBC: LONGVARBINARY
MySQL: MEDIUMBLOB - JDBC: LONGVARBINARY
MySQL: LONGBLOB - JDBC: LONGVARBINARY
MySQL: BLOB - JDBC: LONGVARBINARY
MySQL: TINYBLOB - JDBC: LONGVARBINARY
MySQL: VARBINARY - JDBC: VARBINARY
MySQL: BINARY - JDBC: BINARY
MySQL: LONG VARCHAR - JDBC: LONGVARCHAR
MySQL: MEDIUMTEXT - JDBC: LONGVARCHAR
MySQL: LONGTEXT - JDBC: LONGVARCHAR
MySQL: TEXT - JDBC: LONGVARCHAR
MySQL: TINYTEXT - JDBC: LONGVARCHAR
MySQL: CHAR - JDBC: CHAR
MySQL: NUMERIC - JDBC: NUMERIC
MySQL: DECIMAL - JDBC: DECIMAL
MySQL: INTEGER - JDBC: INTEGER
MySQL: INTEGER UNSIGNED - JDBC: INTEGER
MySQL: INT - JDBC: INTEGER
MySQL: INT UNSIGNED - JDBC: INTEGER
MySQL: MEDIUMINT - JDBC: INTEGER
MySQL: MEDIUMINT UNSIGNED - JDBC: INTEGER
MySQL: SMALLINT - JDBC: SMALLINT
MySQL: SMALLINT UNSIGNED - JDBC: SMALLINT
MySQL: FLOAT - JDBC: REAL
MySQL: DOUBLE - JDBC: DOUBLE
MySQL: DOUBLE PRECISION - JDBC: DOUBLE
MySQL: REAL - JDBC: DOUBLE
MySQL: VARCHAR - JDBC: VARCHAR
MySQL: ENUM - JDBC: VARCHAR
MySQL: SET - JDBC: VARCHAR
MySQL: DATE - JDBC: DATE
MySQL: TIME - JDBC: TIME
MySQL: DATETIME - JDBC: TIMESTAMP
MySQL: TIMESTAMP - JDBC: TIMESTAMP


C ::: Desafios e Lista de Exercícios Resolvidos ::: C Básico

Exercício Resolvido de C - Como ler um número inteiro e imprimir seu sucessor e seu antecessor em C

Quantidade de visualizações: 943 vezes
Pergunta/Tarefa:

Escreva um programa C para ler um número inteiro e imprimir seu sucessor e seu antecessor. O usuário poderá informar um valor positivo ou negativo.

Sua saída deverá ser parecida com:

Informe um número inteiro: 16
O número informado foi: 16
O antecessor é 15
O sucessor é: 17
Resposta/Solução:

Veja a resolução comentada deste exercício usando C:

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

// função principal do programa
int main(int argc, char *argv[]){
  // variáveis usadas na resolução do problema
  int numero, sucessor, antecessor;
	
  setlocale(LC_ALL,""); // para acentos do português 
  
  // vamos pedir para o usuário informar um número inteiro
  printf("Informe um número inteiro: ");
  scanf("%d", &numero);
    
......



Java ::: Fundamentos da Linguagem ::: Tipos de Dados

Como usar o tipo de dados float do Java - Usando o tipo de dados float da linguagem Java

Quantidade de visualizações: 22206 vezes
O tipo de dados float é usado quando precisamos armazenar números de ponto-flutuante (com parte fracionária) na faixa 1.401298464324817e-45f até 3.402823476638528860e+38f. Este tipo ocupa 32 bits na memória (o mesmo que um int) e possui precisão de 6 ou 7 dígitos significativos. Veja um exemplo de seu uso:

public class Estudos{
  public static void main(String args[]){
    float valor = 54.5f;
     
    System.out.println("O valor da variável é: " +
......


Antes de prosseguir, veja que inserí a letra "f" (ou "F") após o valor literal atribuído à variável. Se retirássemos esta letra, o compilador emitiria a seguinte mensagem de erro:

Estudos.java:3: possible loss of precision
found   : double
required: float
  float valor = 54.5;
                ^
1 error


Isso acontece porque, por padrão, um literal de ponto-flutuante é no mínimo do tipo double. E um double não cabe em um float. A definição da letra "f" ou "F" informa ao compilador que estamos realmente definindo um literal float.

O tipo de dados float pode ser convertido (sem a necessidade de cast) para os seguintes tipos:

float -> double

Se precisarmos converter o tipo float para os tipos char, byte, short, int ou long, teremos que lançar mão de uma coerção (cast), também conhecida como conversão forçada. Veja:

float valor = 54.5f;
......


É preciso ficar atento ao fato de que uma coerção de um tipo de ponto-flutuante para um tipo integral (inteiro) resulta na perda da parte fracionária do valor que está sofrendo o cast.


Java ::: Dicas & Truques ::: Data e Hora

Como adicionar ou subtrair dias de uma data e hora usando o método add() da classe Calendar do Java

Quantidade de visualizações: 13170 vezes
Este trecho de código mostra como usar o método add() da classe Calendar da linguagem Java para adicionar ou subtrair dias de uma data. Veja que este método requer o campo de calendário e um número inteiro. Para o nosso propósito, o campo de calendário pode ser DAY_OF_MONTH ou DATE. Um valor positivo adiciona dias enquanto um valor negativo subtrai.

Veja o código completo:

package arquivodecodigos;

import java.util.*;
import java.text.*;
 
public class Estudos{ 
  public static void main(String args[]){ 
    Calendar agora = Calendar.getInstance();
     
    // formata e exibe a data e hora atual
    Format formato = new SimpleDateFormat(
      "dd/MM/yyyy - HH:mm:ss");
    System.out.println("Hoje é: " + 
      formato.format(agora.getTime()));
......


Ao executar este código nós teremos o seguinte resultado:

Hoje é: 19/03/2021 - 22:13:54
Daqui a 5 dias será: 24/03/2021 - 22:13:54


Desafios, Exercícios e Algoritmos Resolvidos de Java

Veja mais Dicas e truques de Java

Dicas e truques de outras linguagens

Quem Somos

Osmar J. Silva
Programador Freelancer
WhatsApp +55 (062) 98553-6711

Goiânia-GO
Programador Freelancer - Full Stack Developer, Professional Java Developer, PHP, C/C++, Python Programmer, wxWidgets Professional C++ Programmer, Freelance Programmer. Formado em Ciência da Computação pela UNIP (Universidade Paulista Campus Goiânia) e cursando Engenharia Civil pela PUC-Goiás. Possuo conhecimentos avançados de Java, Python, JavaScript, C, C++, PHP, C#, VB.NET, Delphi, Android, Perl, e várias tecnologias que envolvem o desenvolvimento web, desktop, front-end e back-end. Atuo há mais de 20 anos como programador freelancer, atendendo clientes no Brasil, Portugal, Argentina e vários outros paises.
Entre em contato comigo para, juntos, vermos em que posso contribuir para resolver ou agilizar o desenvolvimento de seus códigos.
José de Angelis
Programador Freelancer
WhatsApp +55 (062) 98243-1195

Goiânia-GO
Programador Freelancer - Formado em Sistemas de Informação pela Faculdade Delta, Pós graduado em Engenharia de Software (PUC MINAS), Pós graduado Marketing Digital (IGTI) com ênfase em Growth Hacking. Mais de 15 anos de experiência em programação Web. Marketing Digital focado em desempenho, desenvolvimento de estratégia competitiva, analise de concorrência, SEO, webvitals, e Adwords, Métricas de retorno. Especialista Google Certificado desde 2011 Possui domínio nas linguagens PHP, C#, JavaScript, MySQL e frameworks Laravel, jQuery, flutter. Atualmente aluno de mestrado em Ciência da Computação (UFG)
Não basta ter um site. É necessário ter um site que é localizado e converte usuários em clientes. Se sua página não faz isso, Fale comigo e vamos fazer uma analise e conseguir resultados mais satisfatórios..

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 11 usuários muito felizes estudando em nosso site.