Curso de ética ingenieril (IV)

Esto se está poniendo en modo experto… No se imaginan lo que les espera, pero adelanto que esta entrega está al más alto nivel… Bueno, al lío. Resulta que estaba yo mirando unos apuntes del año pasado, en concreto de Programación Orientada a Objetos, cuando llegué a un apartado dedicado a las clases amigas.

Se trata de un tema algo complicado, así que creo que no es razonable que intente explicar aquí qué son esas clases amigas, sobre todo porque quienes no lo sepan se van a quedar igual y quienes lo sepan se van a tirar de los pelos. De todas formas, si a alguien le interesa el tema, puedo dedicarle una entrada.

Las clases son estructuras de datos en la Programación Orientada a Objetos, y resumiendo a lo bestia, una clase que es amiga de otra es una clase que tiene permisos para leer y modificar sus datos privados, realizando un tipo especial de comunicación entre objetos.

El caso es que en las prácticas nos lo mostraban con un ejemplo en C++ políticamente incorrecto. Lo que sigue es un programa que simula el comportamiento de dos vecinas: Pepi y Juani, y que reproduce cómo intercambian sus cotilleos. Progresismo puro, oiga.

Como poner código en WordPress, además de ser una gran experiencia es un coñazo algo complicado posteo sólo las mejores líneas… He dejado los comentarios originales (los comentarios son fragmentos que ayudan a entender el código y que van precedidos de «//»)

class Pepi{
char cotilleo[100];

[…]

Pepi() {
strncpy(cotilleo, «A Mary Flor la plantó su novio», 100);
}

[…]

Pepi(char *not) {
strncpy(cotilleo, not, 100);
}

friend class Juani; // Juani es una clase amiga de Pepi
};

Pero ojo, que lo mejor llega ahora. Los comentarios de la última sección son para llorar…

void main (void) {
Pepi P1, P3(«La vecina de arriba es rubia de bote»);
Juani J1(«Yo no soy nada cotilla»);

[…]

P3.leer(); // Sale lo de rubia de bote
J1.cambia(P3, «Es que realmente es calva»); // Sale este mensaje
J1.escucha(P3); // Sale lo de rubia de bote ya que P3 se ha pasado por valor: no se modifica
P3.leer(); // Sale lo de rubia de bote
J1.cambia(&P3, «Es porque no tienen pelo»); // Sale este mensaje
J1.escucha(P3); // Sale lo de que no tiene pelo ya que P3 se ha pasado por referencia: se modifica
P3.leer(); // Sale lo de que no tiene pelo
J1.cambiaR(P3, «O porque se le cae muy a menudo»); // Sale este mensaje
J1.escucha(P3); // Sale lo de que se le cae muy a menudo ya que P3 se ha pasado como una referencia: se modifica
P3.leer(); // Sale lo de que se le cae muy a menudo
}

Y no, no me lo he inventado… dejo el código fuente aquí, pero adelanto que no lo he probado, por si explota.

6 comentarios

  1. Lamentable y no por machista o feminista sino por convencional. El pensamiento convencional es terrible porque trata de hacernos pensar a todos de la misma forma sea verdad o no.
    El otro día vi en la tele, en un programa en el que hay niños y niñas y un presentador que va de majete, en el que el imbécil éste les preguntaba a los chavales «¿Qué es el amor?… Lo que hay hasta que llega tu mujer», y claro se reían niños, niñas y público, y también el imbécil.
    PD: A mi sí me parece interesante un post sobre clases «amigas», pero amigas sin tonterías, ¿vale? ;)

  2. Acojonante… 8|
    Inquietado me he decidido a probarlo porque me había parecido ver un error, ya que como no incluías cómo era la función cambiaR pues me quedé pillado. De todas maneras tiene otro error y es que not no se puede usar como nombre para una variable.
    Creo que podrías haber añadido, como ejercicio para el lector claro, que se podría crear la clase «vecinaDeArriba» para la que estas dos clases con clases putas, porque se dedican a joderle xD

  3. Hombre, el error más gordo es sin duda asignarle a cotilleo tan sólo 100 caracteres. Eso está por debajo de lo que utiliza la vecina cotilla media. xD

  4. Me ha encantado porque cada uno ha dado un punto de vista particular, interesante y divertido sobre el tema :-)

    Como dice Joselu el principal problema es precisamente ese: el convencionalismo estúpido que lo inunda todo. A mí me impactó la práctica por lo estúpida y vulgar… ¿no se supone que estamos en una universidad?

    Respecto al comentario de HED: ¿Clases putas? ¡JAJAJA! Luego soy yo el friki :-P Ya lo veo en los manuales de POO: «Cuando una clase se dedica a joder a otras se denomina clase puta«. Joder.

    Y el de R. Mármolme ha encantado :-P Yo creo que definiendo una sección de memoria dinámica expandible a unos 10.000 caracteres valdría (aunque con ciertas limitaciones :-P).

    Gracias a mi adorada Misslucifer y a mi queridísima Documentalista-lista por atreverse a comentar en un post tan para frikis :-P

    Un saludo a todos :-D

Escribe tu comentario

Comment