Classe abstrata
Sei que é básico da OO, mas às vezes nos confundimos. Antes eu tinha isso:
Domain.Entity.Tarefa _Tarefa = new Domain.Entity.Tarefa();
Acontece que a classe Tarefa virou abstrata. Como eu faço agora?
Domain.Entity.Tarefa _Tarefa = new Domain.Entity.Tarefa();
Acontece que a classe Tarefa virou abstrata. Como eu faço agora?
Pjava
Curtidas 0
Respostas
Pjava
27/08/2012
Em realidade eu tenho isso aqui. Não posso instaciar uma classe abstrata, então o que eufaço no lugar de...?
public static Domain.Entity.Tarefa RetornarPorID(Domain.Finder.Tarefa _PesquisarTarefa)
{
SqlConnection _SqlConnection = new SqlConnection();
SqlDataReader _SqlDataReader = null;
try
{
_SqlConnection = DataMapperHelper.AbreConexao();
List<SqlParameter> _ListSqlParameters = new List<SqlParameter>();
_ListSqlParameters.Add(new SqlParameter("IdTarefa", _PesquisarTarefa.IdTarefa));
_SqlDataReader = DAO.DAOBase.RetornarPorID(_SqlConnection, "JP_SEL_TarefaPorFiltro", _ListSqlParameters);
Domain.Entity.Tarefa _Tarefa = new Domain.Entity.Tarefa();
while (_SqlDataReader.Read())
{
Inicializar(_Tarefa, _SqlDataReader);
}
return _Tarefa;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (_SqlDataReader != null)
{
_SqlDataReader.Close();
_SqlDataReader.Dispose();
}
DataMapperHelper.FecharConexao(_SqlConnection);
}
}
public static Domain.Entity.Tarefa RetornarPorID(Domain.Finder.Tarefa _PesquisarTarefa)
{
SqlConnection _SqlConnection = new SqlConnection();
SqlDataReader _SqlDataReader = null;
try
{
_SqlConnection = DataMapperHelper.AbreConexao();
List<SqlParameter> _ListSqlParameters = new List<SqlParameter>();
_ListSqlParameters.Add(new SqlParameter("IdTarefa", _PesquisarTarefa.IdTarefa));
_SqlDataReader = DAO.DAOBase.RetornarPorID(_SqlConnection, "JP_SEL_TarefaPorFiltro", _ListSqlParameters);
Domain.Entity.Tarefa _Tarefa = new Domain.Entity.Tarefa();
while (_SqlDataReader.Read())
{
Inicializar(_Tarefa, _SqlDataReader);
}
return _Tarefa;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (_SqlDataReader != null)
{
_SqlDataReader.Close();
_SqlDataReader.Dispose();
}
DataMapperHelper.FecharConexao(_SqlConnection);
}
}
GOSTEI 0
Pjava
27/08/2012
Em realidade eu tenho isso aqui. Não posso instaciar uma classe abstrata, então o que eufaço no lugar de...?
public static Domain.Entity.Tarefa RetornarPorID(Domain.Finder.Tarefa _PesquisarTarefa)
{
SqlConnection _SqlConnection = new SqlConnection();
SqlDataReader _SqlDataReader = null;
try
{
_SqlConnection = DataMapperHelper.AbreConexao();
List<SqlParameter> _ListSqlParameters = new List<SqlParameter>();
_ListSqlParameters.Add(new SqlParameter("IdTarefa", _PesquisarTarefa.IdTarefa));
_SqlDataReader = DAO.DAOBase.RetornarPorID(_SqlConnection, "JP_SEL_TarefaPorFiltro", _ListSqlParameters);
Domain.Entity.Tarefa _Tarefa = new Domain.Entity.Tarefa();
while (_SqlDataReader.Read())
{
Inicializar(_Tarefa, _SqlDataReader);
}
return _Tarefa;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (_SqlDataReader != null)
{
_SqlDataReader.Close();
_SqlDataReader.Dispose();
}
DataMapperHelper.FecharConexao(_SqlConnection);
}
}
public static Domain.Entity.Tarefa RetornarPorID(Domain.Finder.Tarefa _PesquisarTarefa)
{
SqlConnection _SqlConnection = new SqlConnection();
SqlDataReader _SqlDataReader = null;
try
{
_SqlConnection = DataMapperHelper.AbreConexao();
List<SqlParameter> _ListSqlParameters = new List<SqlParameter>();
_ListSqlParameters.Add(new SqlParameter("IdTarefa", _PesquisarTarefa.IdTarefa));
_SqlDataReader = DAO.DAOBase.RetornarPorID(_SqlConnection, "JP_SEL_TarefaPorFiltro", _ListSqlParameters);
Domain.Entity.Tarefa _Tarefa = new Domain.Entity.Tarefa();
while (_SqlDataReader.Read())
{
Inicializar(_Tarefa, _SqlDataReader);
}
return _Tarefa;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (_SqlDataReader != null)
{
_SqlDataReader.Close();
_SqlDataReader.Dispose();
}
DataMapperHelper.FecharConexao(_SqlConnection);
}
}
GOSTEI 0
Marcio [admin]
27/08/2012
Veja se esse vídeo te ajuda com o conceito:
https://www.devmedia.com.br/classe-abstrata-curso-basico-de-java-e-orientacao-a-objetos-parte-29/25322
https://www.devmedia.com.br/classe-abstrata-curso-basico-de-java-e-orientacao-a-objetos-parte-29/25322
GOSTEI 0
Pjava
27/08/2012
É que vídeo eu não consigo abrir aqui na empresa, é proibido, mas farei quando eu chegar em casa.
GOSTEI 0
Pjava
27/08/2012
Em realidade esse conceito de Abstract factory, ainda não entrou em minha cabeça. Cara, to penando e atrasando a equipe, por falta de entendimento desse assunto. Isso que vc explicou eu entendi, é que até para passar a dúvida não sei como. Preciso implementar uma classe Abstract Factory, tipo, TarefaFactory, lá passar um método tipo Criar(SqlDataReader _SqlDataReader), mais ou menos isso:
_SqlDataReader = DAO.DAOBase.RetornarPorID(_SqlConnection, "JP_SEL_TarefaPorFiltro", _ListSqlParameters);
Domain.Entity.Tarefa _Tarefa = TarefaFactory.Criar(_SqlDataReader);
.......
fazer isso, ou seja, dependendo da tarefa, executar a classe conveniente:
TarefaFactory <- verifca a tarefa e chama outra factory responsável
EnviaEmailFactory <- gera o EnviarEmail
ExecutarDTSXFactory <- gera o ExecutarDTSX
EnviaEmailFactory >> EnviaEmail(Classe que sobreexcreve o método executa para enviar email)
ExecutarDTSXFactory >> xecutarDTSX(Classe que sobreexcreve o método executa para executar DTSX)
E assim sucessivamente.
Isso é que eu não estou conseguindo entender e consequentemente implementar.
_SqlDataReader = DAO.DAOBase.RetornarPorID(_SqlConnection, "JP_SEL_TarefaPorFiltro", _ListSqlParameters);
Domain.Entity.Tarefa _Tarefa = TarefaFactory.Criar(_SqlDataReader);
.......
fazer isso, ou seja, dependendo da tarefa, executar a classe conveniente:
TarefaFactory <- verifca a tarefa e chama outra factory responsável
EnviaEmailFactory <- gera o EnviarEmail
ExecutarDTSXFactory <- gera o ExecutarDTSX
EnviaEmailFactory >> EnviaEmail(Classe que sobreexcreve o método executa para enviar email)
ExecutarDTSXFactory >> xecutarDTSX(Classe que sobreexcreve o método executa para executar DTSX)
E assim sucessivamente.
Isso é que eu não estou conseguindo entender e consequentemente implementar.
GOSTEI 0