diff --git a/UyTube_aplicacion/src/Logica/Clases/Comentario.java b/UyTube_aplicacion/src/Logica/Clases/Comentario.java
index a56559ee3f8165c9db6831d13f5635860f5f27f4..b9bbf4baf7a8c89c8198ca35b586ba6152f0553d 100644
--- a/UyTube_aplicacion/src/Logica/Clases/Comentario.java
+++ b/UyTube_aplicacion/src/Logica/Clases/Comentario.java
@@ -5,29 +5,40 @@ import java.sql.Date;
 import java.util.ArrayList;
 
 public class Comentario {
+
     private static int contadorComentarios = 1;
-    
+
     private int id;
     private Date fecha;
     private String texto;
     private int nivelSubComentario;
     private Usuario usr;
+    private ArrayList<Comentario> misComentario;
 
     public Comentario() {
+        this.id = Comentario.getNuevoID();
+        this.misComentario = new ArrayList();
     }
-    
+
     public Comentario(int id, Date fecha, String texto, int nivelSubComentario, Usuario usr) {
+        if(usr==null){
+            throw new RuntimeException("Usuario No puede ser null");
+        }
+        if(fecha==null){
+            throw new RuntimeException("Date No puede ser null");
+        }
         this.id = id;
         this.fecha = fecha;
         this.texto = texto;
         this.nivelSubComentario = nivelSubComentario;
         this.usr = usr;
+        this.misComentario = new ArrayList();
     }
 
-    public static int getNuevoID(){
+    public static int getNuevoID() {
         return contadorComentarios++;
     }
-    
+
     public int getId() {
         return id;
     }
@@ -41,6 +52,9 @@ public class Comentario {
     }
 
     public void setFecha(Date fecha) {
+        if(fecha==null){
+            throw new RuntimeException("Fecha No puede ser null");
+        }
         this.fecha = fecha;
     }
 
@@ -64,23 +78,49 @@ public class Comentario {
         return usr;
     }
 
-    public void setUsr(Usuario usr) {
-        this.usr = usr;
+    @Override
+    public String toString() {
+        return "Comentario{" + "id=" + id + ", fecha=" + fecha + ", texto=" + texto + ", nivelSubComentario=" + nivelSubComentario + '}';
     }
-    
-    
-    public boolean agregarSubComentario(int idComPadre, DtComentario dtC, Usuario usr){
-        return true;
+
+    public boolean agregarSubComentario(int idComPadre, DtComentario dtC, Usuario usr) {
+        if(dtC==null){
+            throw new RuntimeException("DtComentario No puede ser null");
+        }
+        if(usr==null){
+            throw new RuntimeException("Usuario No puede ser null");
+        }
+        if (this.id == idComPadre) {
+            Comentario com = new Comentario(Comentario.getNuevoID(),
+                    dtC.getFecha(),
+                    dtC.getTexto(),
+                    this.nivelSubComentario + 1,
+                    usr);
+            this.misComentario.add(com);
+            return true;
+        } else {
+
+            for (int i = 0; i < misComentario.size(); i++) {
+                if (this.misComentario.get(i).agregarSubComentario(idComPadre, dtC, usr)) {
+                    return true;
+                }
+            }
+            return false;
+        }
     }
-    
-    public DtComentario getDT(){
+
+    public DtComentario getDT() {
         DtComentario dtC = new DtComentario(this.id, this.usr.getNickname(), this.fecha, this.texto, this.nivelSubComentario);
         return dtC;
     }
-    
-    public ArrayList<DtComentario> listarSubComentarios(){
-        return new ArrayList();
+
+    public ArrayList<DtComentario> listarSubComentarios() {
+        ArrayList lsc = new ArrayList();
+
+        for (int i = 0; i < this.misComentario.size(); i++) {
+            lsc.add(this.misComentario.get(i).getDT());
+            lsc.addAll(this.misComentario.get(i).listarSubComentarios());
+        }
+        return lsc;
     }
-    
-    
 }
diff --git a/UyTube_aplicacion/src/Logica/Clases/Valoracion.java b/UyTube_aplicacion/src/Logica/Clases/Valoracion.java
index e511619cef21a21626af0bcd221b6dd1e09762b0..986aaa69392ce44313a4bb6a4396da6c209fbabc 100644
--- a/UyTube_aplicacion/src/Logica/Clases/Valoracion.java
+++ b/UyTube_aplicacion/src/Logica/Clases/Valoracion.java
@@ -11,6 +11,9 @@ public class Valoracion {
     }
     
     public Valoracion(TipoValoracion val, Usuario usr) {
+        if(usr==null){
+            throw new RuntimeException("Usuario No puede ser null");
+        }
         this.val = val;
         this.usr = usr;
     }
@@ -26,16 +29,15 @@ public class Valoracion {
     public Usuario getUsr() {
         return usr;
     }
-
-    public void setUsr(Usuario usr) {
-        this.usr = usr;
-    }
     
-    private DtValoracion getDT(){
+    public DtValoracion getDT(){
         DtValoracion dtV = new DtValoracion(this.val, this.usr.getNickname());
         return dtV;
     }
-    private DtValoracion getDT(String nickname){
+    public DtValoracion getDT(String nickname){
+        if(nickname==null){
+            throw new RuntimeException("Nickname No puede ser null");
+        }
         // si esta valoracion corresponde al usuario, devuelve su DT, sino null
         if (nickname.equals(this.usr.getNickname())){
             return this.getDT();
@@ -43,7 +45,13 @@ public class Valoracion {
             return null;
         }
     }
-    private boolean modificar(DtValoracion dtV, String nickname){
+    public boolean modificar(DtValoracion dtV, String nickname){
+        if(dtV==null){
+            throw new RuntimeException("DtValoracion No puede ser null");
+        }
+        if(nickname==null){
+            throw new RuntimeException("Nickname No puede ser null");
+        }
         if (nickname.equals(this.usr.getNickname())){
             this.val = dtV.getVal();
             return true;
diff --git a/UyTube_aplicacion/src/Logica/main.java b/UyTube_aplicacion/src/Logica/main.java
index 911451d24179437d75744a97dd1faf6ef6df0897..70c1d8fb41879efa7e96e202456c290dd90bcf8f 100644
--- a/UyTube_aplicacion/src/Logica/main.java
+++ b/UyTube_aplicacion/src/Logica/main.java
@@ -4,6 +4,6 @@ import Logica.*;
 
 public class main {
     public static void main(String[] args) {
-
+        
     }
 }