Tamaño: 30
Comentario:
|
Tamaño: 8823
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í. | {{attachment:resumen-poo.png|attachment:resumen-poo.png}} ---- '''Diagrama de ejemplo.''' {{attachment:diagrama_clases2.png|attachment:diagrama_clases2.png}} [[attachment:solucion2.zip|Códigos fuente C++.]] '''programa.cpp''' {{{#!highlight c++ /* * 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
1 /*
2 * Compilación: $ make
3 * Ejecución: $ ./programa
4 */
5 #include <list>
6 #include <iostream>
7 #include "Proteina.h"
8 #include "Cadena.h"
9 #include "Aminoacido.h"
10 #include "Atomo.h"
11 #include "Coordenada.h"
12
13 void print_proteina (Proteina p) {
14 cout << endl;
15
16 cout << "ID: " << p.get_id() << " Nombre: " << p.get_nombre() << endl;
17
18 for (Cadena c: p.get_cadenas()) {
19 cout << "Cadena: " << c.get_letra() << endl;
20
21 for (Aminoacido a: c.get_aminoacidos()) {
22 cout << "\tAminoacido: " << a.get_nombre() << ":" << a.get_numero() << endl;
23
24 for (Atomo at: a.get_atomos()) {
25 cout << "\t\tAtomo: " << at.get_nombre() << ":" << at.get_numero() << " [" <<
26 at.get_coordenada().get_x() << ", " << at.get_coordenada().get_y() << ", " <<
27 at.get_coordenada().get_z() << "]" << endl;
28 }
29 }
30 }
31 }
32
33 /*
34 */
35 int main (int argc, char **argv) {
36 list<Proteina> proteinas;
37
38 // instancia una proteina.
39 Proteina p1 = Proteina("1rmd", "RAG1 DIMERIZATION DOMAIN");
40
41 // la agrega a la lista.
42 proteinas.push_back(p1);
43
44 // instancia una cadena.
45 Cadena a = Cadena("A");
46 // instancia y agrega aminoacidos a la cadena.
47 Aminoacido r = Aminoacido("CIS", 1);
48 // instancia atomo.
49 Atomo at = Atomo("CA", 1, 2.3, 3.3, 2.2);
50 // agrega el átomo al aminoacido.
51 r.add_atomo(at);
52 // agrega otro átomo.
53 r.add_atomo(Atomo("N", 2, 1.1, 2.1, 2.5));
54
55 a.add_aminoacido(r);
56 a.add_aminoacido(Aminoacido("ALA", 2));
57 a.add_aminoacido(Aminoacido("HIS", 3));
58
59 // agrega la cadena a la proteína.
60 p1.add_cadena(a);
61
62 // crea otra cadena.
63 Cadena b = Cadena("B");
64 // agrega aminoacidos a la cadena.
65 b.add_aminoacido(Aminoacido("CYS", 5));
66 b.add_aminoacido(Aminoacido("CYS", 15));
67 b.add_aminoacido(Aminoacido("TYR", 3));
68
69 // agrega otra cadena a la proteína.
70 p1.add_cadena(b);
71
72 print_proteina(p1);
73
74 return 0;
75 }
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)