orientação a objetos – Como atribuir no construtor de uma classe filha uma instância da classe pai em Ruby

Eu tenho uma classe filha que é inicializada com algumas instâncias:

def initialize(nome:, preco:, categoria:)
    @nome = nome
    @preco = preco
    @categoria = categoria
end

Mas preciso que a variável @categoria seja puxada do construtor da classe pai. A instância que preciso da classe pai está com outro nome e não consegui pegar utilizando o método super.

  def initialize(nome: 'Geral')
    @nome = nome
  end

Em resumo, preciso que o atributo @categoria da classe filha herde o atributo @nome da classe pai.

Como faço um método construtor em java que permiti input de uma variável apenas de números positivos?

Obrigado por contribuir com o Stack Overflow em Português!

  • Certifique-se de responder à pergunta. Entre em detalhes sobre a sua solução e compartilhe o que você descobriu.

Mas evite

  • Pedir esclarecimentos ou detalhes sobre outras respostas.
  • Fazer afirmações baseadas apenas na sua opinião; aponte referências ou experiências anteriores.

Para aprender mais, veja nossas dicas sobre como escrever boas respostas.

c# – Retornar uma instância inserida pelo DI do .net core em outras classes fora do construtor

Bom dia!

Gostaria de saber se há a possibilidade de retornar uma instância inserida pelo IServiceCollection do DI no .net core em qualquer outro local do sistema.

Por exemplo:

Em meu Startup.cs, inicio uma classe padrão de comunicação com o banco de dados (classe abaixo – os dados de conexão foram suprimidos):

 public class MongoConnector
  {
    private readonly IMongoDatabase mongoDatabase;

    public MongoConnector()
    {
      mongoDatabase = new MongoClient("").GetDatabase("");  
    }

    public IMongoDatabase getDatabase(){
      return mongoDatabase;
    }
  }

Startup.cs

  public class Startup
  {
    public Startup(IConfiguration configuration)
    {
      Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {      
      services.AddSingleton<MongoConnector>();
    }
  }

Após isto, estou construindo alguns factories que deverão receber esta mesma instância já inicializada no Startup.cs. Em algumas funcões deste factory, eu necessito do MongoConnector, como abaixo, para realizar as minhas regras:

    public string getSourceByToken() {
      // BUSCAR AQUI O MONGO CONECTOR DE ALGUM FORMA
      var database = MongoConnector.getDatabase();
    }

Não posso utilizar pelo construtor pois o factory que possui o evento acima será inicializado através de outra classe do sistema, e que não também não possuir relação com o DI. Sem falar que não gostaria de inicializar TODAS as classes do sistema no DI do Startup, e muito menos ficar passando parâmetros desde o Controller.

Alguém poderia me ajudar?

Obrigado!

java – Ajuda para ler de um ficheiro e adicionar a informação de cada linha no construtor

Bom dia, eu estou com a seguinte dificuldade ao ler um ficheiro txt e quando pego na informação pô-lo automaticamente na criação de um utilizador através de um construtor. Deixo abaixo as duas classes para se alguem me conseguir ajudar a enviar a informação corretamente para a classe Utilizador.

Classe da leitura do ficheiro :

public class FicheiroListaUtilizador{
    private Set<Utilizador> m_lstUtilizadores = new HashSet<Utilizador>();

    public static void ficheiroLista(String() args) throws IOException {
        List<String> lista = new ArrayList<String>();
        List<String> strNome = new ArrayList<String>(); 
        List<String> strEmail = new ArrayList<String>();
        List<String> strPassword = new ArrayList<String>();
        File file = new File("C:\src\main\java\Data\ListaUtilizadores.txt");
        if(file.exists()){
            try { 
            lista = Files.readAllLines(file.toPath());
                } catch (IOException ex) {
            ex.printStackTrace();
            }
            if(lista.isEmpty()){
            return;}
    }
        for(String line : lista){
        String () res = line.split(",");
        strNome.add(res(0));
        strEmail.add(res(1));
        strPassword.add(res(2));
    }
}
}

Classe onde está o construtor do mesmo:

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Objects;
import java.util.Set;

/**
 *
 * @author paulomaio
 */
public class Utilizador
{
    private String m_strNome;
    private String m_strEmail;
    private String m_strPassword; // Não deveria guardar a password em "plain text"
    private Set<PapelUtilizador> m_lstPapeis = new HashSet<PapelUtilizador>();

    public Utilizador(String strNome, String strEmail, String strPassword)
    {

        if ( (strNome == null) || (strEmail == null) || (strPassword == null) || (strNome.isEmpty()) || (strEmail.isEmpty()) || (strPassword.isEmpty()))
            throw new IllegalArgumentException("Nenhum dos argumentos não pode ser nulo ou vazio.");

        this.m_strNome = strNome;
        this.m_strEmail = strEmail;
        this.m_strPassword = strPassword;

    }

Obrigado!