Wednesday, August 29, 2007

El Mundo en Clases


Siempre se ha dicho que Ingeniería te vuelve medio loco. No me extraña esa suposición, y de hecho pienso que puede ser cierta, pero hay distintos tipos de locos. Los locos estructurines, como Juani, que ven fuerzas y vigas y esas cosas por todos lados; los matemáticos, como Nicolás, que pasa el día diciendo "por lo general es mentira" y buscando demostraciones (y si no, no lo cree); y locos computines, y de eso no necesito dar ejemplos...
En fin, ayer tuve el control más jugoso de toda mi vida. Era de Progra, y el enunciado decía más o menos así:
"Open Office es una suite de escritorio con procesador de textos y hoja de cálculo, aternativa al software de aquella compañía (Compañía cuyo nombre comienza con M y termina con icrosoft)".
Después de recuperarme del ataque de risa, leí las instrucciones. Básicamente, teníamos que hacer una modelación del programa, considerando las clases y objetos posibles. Nada de código, sólo juntar ideas.
Más tarde, en geometría, le mostré a Ovalle mi borrador del control. En una hoja aparte, tenía escrito un diagrama con muchas flechas indicando relaciones de herencia y objetos participantes. A partir de eso, seguimos rellenando la hojita.. pero con respecto a la gente que conocemos.

Ya lo sé, lo que verán a continuación puede que a muchos no les cause tanta risa como a mí, o por el otro lado que sean muy críticos con el pseudo-código. Nos tomamos muchas libertades para hacerlo, sobre todo conceptualmente, por lo que no es recomendable tomarlo como un ejemplo de Programación awesome. Es sólo porque se nos ocurrió mientras estábamos aburridos con Ovalle en Geometría. Y dice así:

class Andrea : Myrecaba{
//Haga su programa aquí
}
class Myrecaba : IAyudanteJefe : DCC
{
void ProgramarEnC(){}
void ProgramarEnC#(){}
void ProgramarEnJava(){}
void ProgramarEnCualquierLenguajeQueSeTeOcurra(){}
}
interface IAyudanteJefe{
void HacerLabsIntroProgramacion();
void HacerTareasIntroProgramacion();
void CrearIIC1102Package();
}
class JPCanepa : IloveLinux : Myrecaba: DCC
{
public override void AyudanteJefe() {
throw NoFuiAyudanteNiProfesorAntesException Exception;
}
void CorregirMyrecaba(){}
void HacerDiapositivasEntretenidas(){}
}
class MarceloArenas : Matematico : XML
{
}
sealed class Riera : Matematico
{
void Plot (Figura fig){}
GradosAcademicos [] misGrados = new GradosAcademicos [5];
void UsarMeipl(){}
}
abstract class DCC
{
string FraseTipica = "Sí pero no";
}
class IloveLinux()
{
string FraseTipica = "aquella compañía";
void antiMicrosoft(){}
void SVNEnTerminal(){}
File HacerDocumentosEnLatex(){}
}
abstract class Matematico {
string FraseTipica1= "O zea zi";
string FraseTipica2= "Por lo general, es mentira";
void DejemosHastaAquiLaAyudantia(){}
void RajarIngenieros(){}
}

=)

6 comments:

Mario said...

Si tuvimos tiempo de hacer eso durante la ayudantía de Geometría no fue precisamente porque nos creyéramos secos ni nada por el estilo, sino más bien porque la ayudantía consistió principalmente en cosas que ya habíamos hecho con Riera (profe de Geometría que hace muy buenos dibujos)...

Bueno, empezando desde el principio puedo decir que me perdí "aquel" control de Programación Avanzada al llegar aproximadamente media hora tarde... En ese control (dado el enunciado) es notoria la mano de Juan Pablo Canepa, sobre todo para los que asistimos a su charla de Introducción a Linux... Aunque le faltó poner Micro$oft, pero escrito de esa forma (cambiando la 's' por un '$')...

Respecto a lo de los "locos computines", probablemente ya me hayan incluido en esa categoría después de mi programación en Java del Sintetizador de excusas aleatorias (post de hace algunos días)...

Jajajaja, que risa la de los matemáticos "dejemoslo hasta aquí", "o zea zí"... O de los linuxeros: "aquella compañía", "aquel sistema operativo"...

Oh, Marcelo Arenas implementa la clase matemático (con el método RajarIngenieros)... Eso podría explicar la relativamente alta tasa de reprobación del ramo Introducción a la Programación...

Aún así, faltó programar a Davidal (aunque sinceramente creo que existe poco que agregar sobre la clase Matemático)...

Y tú, tenías que partir teniendo como base a myrecaba, para luego agregar cosas adicionales (no será un exceso de autoestima? jajajaja)... Aunque creo que en realidad serás más parecida a JP (ideales comunes contra Micro$oft, Window$, Bill Gate$, Vi$ta (Notese que todo lleva $) y todo lo relacionado con "aquella compañía")...

Bueno, para terminar, un mensaje que bien podría decir Nicolás: "O sea sí, si no eres al menos un poco computín puedes ver este post, pero además de aburrirte no lo vas a entender"...

Mario (Ya no necesito poner "Ovalle", si cuando contestes este post me llamarás así... Jajajaja)...

Mario said...

Vagando por la red encontré un carácter muy loco: ‫‬‭‮‪‫‬‭‮҉

Este carácter tiene la particularidad de hacerte escribir al reves..

Mario (ovalle)...

andrea said...

Vamos a responderte por partes:

Riera es tan seco que se adelanta a los ayudantes :D

No sé, no creo que JP hiciera algo tan explícito antiMicrosoft en un control. Uno nunca sabe quien puede ser hijo de un gran accionista o algo asi xD. Micro$oft hubiera sido demasiado, en parte fue la "sutileza" lo que hizo la situación tan graciosa.

Ovalle, aunque no sigas civil en computación, en el fondo de tu alma eres computín (y eso es un cumplido). En cualquier caso, yo sé que la Ingeniería será tu hobbie y te dedicarás, cual Davidal, a la música. Ciertamente, el comentario de las excusas aleatorias fue un punto a tu favor.

Cualquier parecido con la realidad fue sólo coincidencia xD.

No había cachado la relación directa de la herencia "Matemático" con la tasa de reprobación del ramo. Santo Maple, parece que hicimos una buena modelación de la realidad después de todo.

Davidal implementaría interfase IMusico, claramente. Y también IFilósofo.. y probalemente tendría un método echarseMagister(), un override a rajarIngenieros() que lo haría aun más brígido, y concatenaría a la fraseTípica1 su "pero zi lo veo, te rajo".

Myrecaba es mi ídolo máximo, no podía no heredar de él (en todo caso, dame 2 años y yo voy a ser la ayudante jefe de Intro :p) . Pero mi clase tiene un "//Haga su programa aquí", porque estoy recien empezando la carrera así que me falta muuucho por implementar aún. JP es bakán también (y más carismático), pero a Myrecaba le tengo un cariño especial desde que me dijo que calzaba con el perfil del DCC. Eso sí, creo que debería haber heredado de ILoveLinux también, no se me ocurrió.

Nos falta el comentario de Nicolás! Pero típico q dice que por lo general es mentira xD.

nico said...

excelente post!

aunque hay cosas nuevas como class abstract y esas cosas que no entiendo, me reí harto con las frases y intrucciones.

public string rajarIngenieros(Ayudante ayudante, Alumno alumno) trhows DivisionByZeroException;{
if (ayudante == davidal)
x=1/0
if (x==true){ return "o zea zi, pero si yo veo eso en una prueba te rajo."
alumno.setNota(1.0);
}

if (x==0){ return "esta bien, pero igual te voy a rajar." ;
alumno.setNota(-Pi);
}

if (alumno.carrera ="Ingenieria")alumno.RajarIngenieros();

if (alumno==ovalle OR alumno==andrea)
alumno.hecharse(calculo,geometria);
//ja ja ja eso fue muy sarcastico de mi parte,, en todo caso es broma.
esta bien
ah, y para variar,

--> <--
nico.

nico said...

existe en algun lenguaje de programacion algunas variables:

int - n. enteros
double - n. racionales

tales que definan complejos o numeros como infinito?

andrea said...

if (alumno==ovalle OR alumno==andrea)
alumno.hecharse(calculo,geometria);

JAJAJAJAJAJA!!! xD Que maldad de tu parte!!

Así como un lenguaje no sé, pero como Java y C# son orientados a objetos, te bastaría con crear una clase para operar con complejos. Y por supuesto que puedes definir operaciones como dividir por cero o por infinito :D