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.

Publicado en Curso de ética ingenieril | 6 comentarios

Artículos relacionados

6 comentarios

Suscríbete a los comentarios (RSS) o enlaza este artículo.

  1. 21 de diciembre de 2006 a las 12:16 am

    Misslucifer escribió:

    ¡Estos informáticos están locos!

  2. 21 de diciembre de 2006 a las 9:40 am

    Joselu escribió:

    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? ;)

  3. 21 de diciembre de 2006 a las 12:55 pm

    HED escribió:

    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

  4. 21 de diciembre de 2006 a las 3:43 pm

    R. Mármol escribió:

    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

  5. 21 de diciembre de 2006 a las 5:42 pm

    Documentalista-lista escribió:

    como diría jorge javier… muy fuerrrrrte ;-)

  6. 22 de diciembre de 2006 a las 9:37 am

    pau escribió:

    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 un comentario

Actualidad Ajedrez Citas Cultura libre Curiosidades Curso de ética ingenieril Echando una mano Hardware y electrónica Humor I Love Mac Inclasificable Indignado me ando Informática teórica Ingeniería del software Inteligencia artificial Internet Libros Mundo friki Nosololinux Segmentation Fault Seguridad Sistemas Operativos

Acerca de

Nosololinux es un blog sobre ciencia y tecnología, y más concretamente, sobre electrónica, sistemas informáticos, inteligencia artificial y cosas del estilo. El humor tampoco falta.

Nosololinux se distribuye bajo licencia Creative Commons

Creative Commons License