Por mucho que quieras aprender conceptos tendrás que usar algún lenguaje concreto para hacer ejercicios y probar código.
También tienes el pseudocódigo que por un lado es más fácil ya que no tienes errores de sintaxis y te puedes centrar en la lógica, pero por otro no ves nada ejecutarse ni dar resultados.
Yo aprendí con C y con pseudocódigo, y te recomiendo que empieces con python.
#1140 "exponer" significa que el usuario no sabe por qué variables miembro está compuesta la estructura de la clase, no significa "dar acceso". La funcionalidad de ambos métodos es la misma pero el concepto distinto.
tios que no esta preguntando por lenguajes en los que aprender a programar, de hecho ya sabe programar en C, quiere saber a programar en sí, estructuras, metodos de programacion etc
Ya que estamos en FEDA deberíamos destapar la trama de r2d2rigo y su editor isométrico que prometió a mediavida y terminó hasta borrando el repositorio.
http://www.mediavida.com/foro/dev/indies-mv-pedid-vuestra-herramienta-aqui-467377
https://github.com/r2d2rigo/IsometricStudio
Jugó con el corazón de muchos desarrolladores y luego lo pisó cual insecto.
Grow a pair or go home.
https://en.wikipedia.org/wiki/Assembly_language + https://en.wikipedia.org/wiki/MIPS_instruction_set
Verás tú si sientas bases.
#1147 Con eso donde único vas a querer sentarte es en el séptimo círculo del infierno.
Sólo de leer MIPS me entran ganas de suicidarme 46 veces seguidas.
#1148 bah, tonterías. Menuda práctica de EC hice una vez. Girar imágenes 90 grados pixel a pixel, todo en ensamblador. Me quería morir
Algún mediavidero que con el que compartí clase se curró un ahorcado con gráficos tirando de simulador MIPS y consola en EC.
Lo que hay detrás de las respuestas de r2d2rigo y umbranoide es que tenéis que pensar en los set/get como parte del API de vuestra clase. Si estais haciendo una clase Punto, pues si tiene sentido que tengais el el SetX y SetY, porque a nivel abstacto un punto en 3D se compone de una coordenada x, y y z. La implementación interna del punto la podeis cambiar mientras que los Setters y Getters sean los mismos. P.ej imaginaos que quereis hacer un juego como el Kerbal Space Program y el float se os queda corto.
Hola, soy programador de C# con 10 años de experiencia y cada vez que declaro una propiedad de List<> en una clase llamo al Clear() sin haberle hecho el new antes, llamandolo desde un background thread. Horas debugando. Cada puto dia.
#1132 #1133 ay diocito llevame pronto. Depende mucho del lenguaje. En C++ se diferencian en la visibilidad por defecto de los miembros, mientras que por ejemplo en C# las structs son por valor (residen en stack) y las classes por referencia (residen en heap), aparte de que las structs no pueden tener constructores por defecto.
#1144 oh fuck, se me fue la mano haciendo limpieza en GitHub :/ El caso es que el codigo lo tengo aun en local... Estuve mirando de hacerlo crossplatform para que lo usara mas gente y entre que me sacas de WPF y me da pereza y para el render uso SharpDX... Puedo liberar lo que tengo, pero es nada y menos la verdad. Me marque un Midgard ahi, lo asumo.
#1156 yo por eso siempre intento usar la Null Object pattern (https://en.wikipedia.org/wiki/Null_Object_pattern#C.23), o al menos asegurarme siempre de que todo esta inicializado por cojones. Pocas collejas he dado ya por jugar con nulos por las buenas... Y para la proxima, menu Debug > Exceptions > Marca las que veas necesarias (o todas si no te quieres andar con tonterias). El debugger saltara siempre que se lanza una excepcion, aunque sea catcheada.
#1157 No creo que la pattern aplique aqui no? Un ejemplo de como evitar esto?
public class A
{
public List<string> Whatever { get; set; }
public void Foo()
{
// this.Whatever = new List<string>(); -> lo que siempre me olvido.
this.Whatever.Clear(); // Gñeee, NullReferenceException tragada por background threads.
this.Whatever.Add("Foo");
}
}
#1158 puedes imponterte a ti mismo el inicializar en la declaración, así es mucho más obvio cuando se te ha olvidado:
public class A {
public List<String> whatever = new ArrayList();
...
}
#1155 lo buscare por el dropbox, pero hace unos añitos ya de eso no te lo aseguro, si lo encuentro te lo paso.
Algunas funciones eran en C y otras en ASM, tenias que ir mirando por código hexadecimal que te había salido y si no recuerdo mal podías volver a repartir las cartas
Sobre los getters/setters, cuando se devuelven objetos internos, normalmente se devuelven "copias" u objetos no modificables, para evitar que precisamente, que se produzcan cambios fuera de la clase que no deberían.
Por ejemplo, si tienes una lista, no devuelvas la lista en el getter, sino o bien una copia, o un Collections.unmodifiableList o similar. Para que no te hagan un : .getList().clear();
No tienes por qué poner getters/setters a todo lo que se menea.
Esto de los setters/getters a pelo, suelen ser para los POJOs.
pff llevo toda la mañana pensando q db usar para una pequeña app web echa en flask.
¿rel o nonrel?
contra mas lo pienso mas pereza.