|
Tamaño: 111
Comentario:
|
Tamaño: 8808
Comentario:
|
| Los textos eliminados se marcan así. | Los textos añadidos se marcan así. |
| Línea 1: | Línea 1: |
| Escribe acerca de POO aquí. |
|
| Línea 5: | Línea 3: |
| {{{ codigo }}} |
---- '''Diagrama de ejemplo.''' {{attachment:diagrama_clases2.png|attachment:diagrama_clases2.png}} [[attachment:solucion2.zip|Códigos fuente C++.]] '''programa.cpp''' {{{ /* * Compilación: $ make * Ejecución: $ ./programa */ #include <list> #include <iostream> #include "Proteina.h" #include "Cadena.h" #include "Aminoacido.h" #include "Atomo.h" #include "Coordenada.h" void print_proteina (Proteina p) { cout << endl; cout << "ID: " << p.get_id() << " Nombre: " << p.get_nombre() << endl; for (Cadena c: p.get_cadenas()) { cout << "Cadena: " << c.get_letra() << endl; for (Aminoacido a: c.get_aminoacidos()) { cout << "\tAminoacido: " << a.get_nombre() << ":" << a.get_numero() << endl; for (Atomo at: a.get_atomos()) { cout << "\t\tAtomo: " << at.get_nombre() << ":" << at.get_numero() << " [" << at.get_coordenada().get_x() << ", " << at.get_coordenada().get_y() << ", " << at.get_coordenada().get_z() << "]" << endl; } } } } /* */ int main (int argc, char **argv) { list<Proteina> proteinas; // instancia una proteina. Proteina p1 = Proteina("1rmd", "RAG1 DIMERIZATION DOMAIN"); // la agrega a la lista. proteinas.push_back(p1); // instancia una cadena. Cadena a = Cadena("A"); // instancia y agrega aminoacidos a la cadena. Aminoacido r = Aminoacido("CIS", 1); // instancia atomo. Atomo at = Atomo("CA", 1, 2.3, 3.3, 2.2); // agrega el átomo al aminoacido. r.add_atomo(at); // agrega otro átomo. r.add_atomo(Atomo("N", 2, 1.1, 2.1, 2.5)); a.add_aminoacido(r); a.add_aminoacido(Aminoacido("ALA", 2)); a.add_aminoacido(Aminoacido("HIS", 3)); // agrega la cadena a la proteína. p1.add_cadena(a); // crea otra cadena. Cadena b = Cadena("B"); // agrega aminoacidos a la cadena. b.add_aminoacido(Aminoacido("CYS", 5)); b.add_aminoacido(Aminoacido("CYS", 15)); b.add_aminoacido(Aminoacido("TYR", 3)); // agrega otra cadena a la proteína. p1.add_cadena(b); print_proteina(p1); return 0; } }}} '''Proteina.h ''' {{{ #ifndef PROTEINA_H #define PROTEINA_H #include <list> #include <iostream> using namespace std; #include "Cadena.h" class Proteina { private: string id; string nombre; list<Cadena> cadenas; public: /* constructores */ Proteina (string id, string nombre); /* métodos get and set */ string get_nombre(); string get_id(); void set_nombre(string nombre); void set_id(string id); void add_cadena(Cadena cadena); list<Cadena> get_cadenas(); }; #endif }}} '''Proteina.cpp''' {{{ /* */ #include <iostream> using namespace std; #include "Proteina.h" /* constructores */ Proteina::Proteina (string id, string nombre) { this->nombre = nombre; this->id = id; } /* métodos get and set */ string Proteina::get_nombre() { return this->nombre; } string Proteina::get_id() { return this->id; } void Proteina::set_nombre(string nombre) { this->nombre = nombre; } void Proteina::set_id(string id) { this->id = id; } void Proteina::add_cadena(Cadena cadena) { this->cadenas.push_back(cadena); } list<Cadena> Proteina::get_cadenas() { return this->cadenas; } }}} '''Cadena.h''' {{{ #ifndef CADENA_H #define CADENA_H #include <list> #include <iostream> using namespace std; #include "Aminoacido.h" class Cadena { private: string letra; list<Aminoacido> aminoacidos; public: /* constructores */ Cadena (string letra); /* métodos get and set */ string get_letra(); list<Aminoacido> get_aminoacidos(); void set_letra(string letra); void add_aminoacido(Aminoacido aminoacido); }; #endif }}} '''Cadena.cpp''' {{{ /* */ #include <iostream> using namespace std; #include "Cadena.h" /* constructores */ Cadena::Cadena (string letra) { this->letra = letra; } /* métodos get and set */ string Cadena::get_letra() { return this->letra; } void Cadena::set_letra(string letra) { this->letra = letra; } void Cadena::add_aminoacido(Aminoacido aminoacido) { this->aminoacidos.push_back(aminoacido); } list<Aminoacido> Cadena::get_aminoacidos() { return this->aminoacidos; } }}} '''Aminoacido.h''' {{{ #ifndef AMINOACIDO_H #define AMINOACIDO_H #include <list> #include <iostream> using namespace std; #include "Atomo.h" class Aminoacido { private: int numero; string nombre; list<Atomo> atomos; public: /* constructores */ Aminoacido (string nombre, int numero); /* métodos get and set */ string get_nombre(); int get_numero(); void set_nombre(string nombre); void set_numero(int numero); void add_atomo(Atomo atomo); list<Atomo> get_atomos(); }; #endif }}} '''Aminoacido.cpp''' {{{ /* */ #include <iostream> using namespace std; #include "Aminoacido.h" /* constructores */ Aminoacido::Aminoacido (string nombre, int numero) { this->nombre = nombre; this->numero = numero; } /* métodos get and set */ string Aminoacido::get_nombre() { return this->nombre; } int Aminoacido::get_numero() { return this->numero; } void Aminoacido::set_nombre(string nombre) { this->nombre = nombre; } void Aminoacido::set_numero(int numero) { this->numero = numero; } void Aminoacido::add_atomo(Atomo atomo) { this->atomos.push_back(atomo); } list<Atomo> Aminoacido::get_atomos() { return this->atomos; } }}} '''Atomo.h''' {{{ #ifndef ATOMO_H #define ATOMO_H #include <iostream> using namespace std; #include "Coordenada.h" class Atomo { private: string nombre; int numero; Coordenada coordenada; public: /* constructores */ Atomo (string nombre, int numero, float x, float y, float z); /* métodos get and set */ string get_nombre(); int get_numero(); void set_nombre(string nombre); void set_numero(int numero); Coordenada get_coordenada(); }; #endif }}} '''Atomo.cpp''' {{{ /* */ #include <iostream> using namespace std; #include "Atomo.h" /* constructores */ Atomo::Atomo (string nombre, int numero, float x, float y, float z) { this->nombre = nombre; this->numero = numero; this->coordenada = Coordenada(x, y, z); } /* métodos get and set */ string Atomo::get_nombre() { return this->nombre; } int Atomo::get_numero() { return this->numero; } void Atomo::set_nombre(string nombre) { this->nombre = nombre; } void Atomo::set_numero(int numero) { this->numero = numero; } Coordenada Atomo::get_coordenada() { return this->coordenada; } }}} '''Coordenada.h''' {{{ #ifndef COORDENADA_H #define COORDENADA_H #include <iostream> using namespace std; class Coordenada { private: float x; float y; float z; public: /* constructores */ Coordenada (); Coordenada (float x, float y, float z); /* métodos get and set */ void set_x(float x); void set_y(float y); void set_z(float z); float get_x(); float get_y(); float get_z(); }; #endif }}} '''Coordenada.cpp''' {{{ /* */ #include <iostream> using namespace std; #include "Coordenada.h" /* constructores */ Coordenada::Coordenada () {} Coordenada::Coordenada (float x, float y, float z) { this->x = x; this->y = y; this->z = z; } /* métodos get and set */ void Coordenada::set_x(float x) { this->x = x; } void Coordenada::set_y(float y) { this->y = y; } void Coordenada::set_z(float z) { this->z = z; } float Coordenada::get_x() { return this->x; } float Coordenada::get_y() { return this->y; } float Coordenada::get_z() { return this->z; } }}} '''Makefile''' {{{ prefix=/usr/local CC = g++ CFLAGS = -g -Wall SRC = programa.cpp Proteina.cpp Cadena.cpp Aminoacido.cpp Atomo.cpp Coordenada.cpp OBJ = programa.o Proteina.o Cadena.o Aminoacido.o Atomo.o Coordenada.o APP = programa all: $(OBJ) $(CC) $(CFLAGS)-o $(APP) $(OBJ) clean: $(RM) $(OBJ) $(APP) install: $(APP) install -m 0755 $(APP) $(prefix)/bin uninstall: $(APP) $(RM) $(prefix)/bin/$(APP) }}} |
Diagrama de ejemplo.
programa.cpp
/*
* Compilación: $ make
* Ejecución: $ ./programa
*/
#include <list>
#include <iostream>
#include "Proteina.h"
#include "Cadena.h"
#include "Aminoacido.h"
#include "Atomo.h"
#include "Coordenada.h"
void print_proteina (Proteina p) {
cout << endl;
cout << "ID: " << p.get_id() << " Nombre: " << p.get_nombre() << endl;
for (Cadena c: p.get_cadenas()) {
cout << "Cadena: " << c.get_letra() << endl;
for (Aminoacido a: c.get_aminoacidos()) {
cout << "\tAminoacido: " << a.get_nombre() << ":" << a.get_numero() << endl;
for (Atomo at: a.get_atomos()) {
cout << "\t\tAtomo: " << at.get_nombre() << ":" << at.get_numero() << " [" <<
at.get_coordenada().get_x() << ", " << at.get_coordenada().get_y() << ", " <<
at.get_coordenada().get_z() << "]" << endl;
}
}
}
}
/*
*/
int main (int argc, char **argv) {
list<Proteina> proteinas;
// instancia una proteina.
Proteina p1 = Proteina("1rmd", "RAG1 DIMERIZATION DOMAIN");
// la agrega a la lista.
proteinas.push_back(p1);
// instancia una cadena.
Cadena a = Cadena("A");
// instancia y agrega aminoacidos a la cadena.
Aminoacido r = Aminoacido("CIS", 1);
// instancia atomo.
Atomo at = Atomo("CA", 1, 2.3, 3.3, 2.2);
// agrega el átomo al aminoacido.
r.add_atomo(at);
// agrega otro átomo.
r.add_atomo(Atomo("N", 2, 1.1, 2.1, 2.5));
a.add_aminoacido(r);
a.add_aminoacido(Aminoacido("ALA", 2));
a.add_aminoacido(Aminoacido("HIS", 3));
// agrega la cadena a la proteína.
p1.add_cadena(a);
// crea otra cadena.
Cadena b = Cadena("B");
// agrega aminoacidos a la cadena.
b.add_aminoacido(Aminoacido("CYS", 5));
b.add_aminoacido(Aminoacido("CYS", 15));
b.add_aminoacido(Aminoacido("TYR", 3));
// agrega otra cadena a la proteína.
p1.add_cadena(b);
print_proteina(p1);
return 0;
}Proteina.h
#ifndef PROTEINA_H
#define PROTEINA_H
#include <list>
#include <iostream>
using namespace std;
#include "Cadena.h"
class Proteina {
private:
string id;
string nombre;
list<Cadena> cadenas;
public:
/* constructores */
Proteina (string id, string nombre);
/* métodos get and set */
string get_nombre();
string get_id();
void set_nombre(string nombre);
void set_id(string id);
void add_cadena(Cadena cadena);
list<Cadena> get_cadenas();
};
#endifProteina.cpp
/*
*/
#include <iostream>
using namespace std;
#include "Proteina.h"
/* constructores */
Proteina::Proteina (string id, string nombre) {
this->nombre = nombre;
this->id = id;
}
/* métodos get and set */
string Proteina::get_nombre() {
return this->nombre;
}
string Proteina::get_id() {
return this->id;
}
void Proteina::set_nombre(string nombre) {
this->nombre = nombre;
}
void Proteina::set_id(string id) {
this->id = id;
}
void Proteina::add_cadena(Cadena cadena) {
this->cadenas.push_back(cadena);
}
list<Cadena> Proteina::get_cadenas() {
return this->cadenas;
}Cadena.h
#ifndef CADENA_H
#define CADENA_H
#include <list>
#include <iostream>
using namespace std;
#include "Aminoacido.h"
class Cadena {
private:
string letra;
list<Aminoacido> aminoacidos;
public:
/* constructores */
Cadena (string letra);
/* métodos get and set */
string get_letra();
list<Aminoacido> get_aminoacidos();
void set_letra(string letra);
void add_aminoacido(Aminoacido aminoacido);
};
#endifCadena.cpp
/*
*/
#include <iostream>
using namespace std;
#include "Cadena.h"
/* constructores */
Cadena::Cadena (string letra) {
this->letra = letra;
}
/* métodos get and set */
string Cadena::get_letra() {
return this->letra;
}
void Cadena::set_letra(string letra) {
this->letra = letra;
}
void Cadena::add_aminoacido(Aminoacido aminoacido) {
this->aminoacidos.push_back(aminoacido);
}
list<Aminoacido> Cadena::get_aminoacidos() {
return this->aminoacidos;
}Aminoacido.h
#ifndef AMINOACIDO_H
#define AMINOACIDO_H
#include <list>
#include <iostream>
using namespace std;
#include "Atomo.h"
class Aminoacido {
private:
int numero;
string nombre;
list<Atomo> atomos;
public:
/* constructores */
Aminoacido (string nombre, int numero);
/* métodos get and set */
string get_nombre();
int get_numero();
void set_nombre(string nombre);
void set_numero(int numero);
void add_atomo(Atomo atomo);
list<Atomo> get_atomos();
};
#endifAminoacido.cpp
/*
*/
#include <iostream>
using namespace std;
#include "Aminoacido.h"
/* constructores */
Aminoacido::Aminoacido (string nombre, int numero) {
this->nombre = nombre;
this->numero = numero;
}
/* métodos get and set */
string Aminoacido::get_nombre() {
return this->nombre;
}
int Aminoacido::get_numero() {
return this->numero;
}
void Aminoacido::set_nombre(string nombre) {
this->nombre = nombre;
}
void Aminoacido::set_numero(int numero) {
this->numero = numero;
}
void Aminoacido::add_atomo(Atomo atomo) {
this->atomos.push_back(atomo);
}
list<Atomo> Aminoacido::get_atomos() {
return this->atomos;
}Atomo.h
#ifndef ATOMO_H
#define ATOMO_H
#include <iostream>
using namespace std;
#include "Coordenada.h"
class Atomo {
private:
string nombre;
int numero;
Coordenada coordenada;
public:
/* constructores */
Atomo (string nombre, int numero, float x, float y, float z);
/* métodos get and set */
string get_nombre();
int get_numero();
void set_nombre(string nombre);
void set_numero(int numero);
Coordenada get_coordenada();
};
#endifAtomo.cpp
/*
*/
#include <iostream>
using namespace std;
#include "Atomo.h"
/* constructores */
Atomo::Atomo (string nombre, int numero, float x, float y, float z) {
this->nombre = nombre;
this->numero = numero;
this->coordenada = Coordenada(x, y, z);
}
/* métodos get and set */
string Atomo::get_nombre() {
return this->nombre;
}
int Atomo::get_numero() {
return this->numero;
}
void Atomo::set_nombre(string nombre) {
this->nombre = nombre;
}
void Atomo::set_numero(int numero) {
this->numero = numero;
}
Coordenada Atomo::get_coordenada() {
return this->coordenada;
}Coordenada.h
#ifndef COORDENADA_H
#define COORDENADA_H
#include <iostream>
using namespace std;
class Coordenada {
private:
float x;
float y;
float z;
public:
/* constructores */
Coordenada ();
Coordenada (float x, float y, float z);
/* métodos get and set */
void set_x(float x);
void set_y(float y);
void set_z(float z);
float get_x();
float get_y();
float get_z();
};
#endifCoordenada.cpp
/*
*/
#include <iostream>
using namespace std;
#include "Coordenada.h"
/* constructores */
Coordenada::Coordenada () {}
Coordenada::Coordenada (float x, float y, float z) {
this->x = x;
this->y = y;
this->z = z;
}
/* métodos get and set */
void Coordenada::set_x(float x) {
this->x = x;
}
void Coordenada::set_y(float y) {
this->y = y;
}
void Coordenada::set_z(float z) {
this->z = z;
}
float Coordenada::get_x() {
return this->x;
}
float Coordenada::get_y() {
return this->y;
}
float Coordenada::get_z() {
return this->z;
}Makefile
prefix=/usr/local
CC = g++
CFLAGS = -g -Wall
SRC = programa.cpp Proteina.cpp Cadena.cpp Aminoacido.cpp Atomo.cpp Coordenada.cpp
OBJ = programa.o Proteina.o Cadena.o Aminoacido.o Atomo.o Coordenada.o
APP = programa
all: $(OBJ)
$(CC) $(CFLAGS)-o $(APP) $(OBJ)
clean:
$(RM) $(OBJ) $(APP)
install: $(APP)
install -m 0755 $(APP) $(prefix)/bin
uninstall: $(APP)
$(RM) $(prefix)/bin/$(APP)