#pragma once
#include"book.h"
#include
#include
#include
class itor {
public:
virtual bool hasNext() = 0;
virtual Book* getNext() = 0;
};
class aggregate {
public:
virtual itor* creat() = 0;
virtual int count()=0;
virtual Book*getItem(int i) = 0;
};
class Conitor :public itor {
aggregate*list;
int cid;
public:
Conitor(aggregate * l)
{
cid = 0;
list = l;
}
bool hasNext() {
if (cid >= list->count())
{
return false;
}
else
{
return true;
}
}
Book*getNext() {
return list->getItem(cid++);
}
};
class Booklist:public ::aggregate {
vector
booklist;
int cid;
itor* itor1;
public:
Booklist() {
cid = 0;
}
void addBook(Book*book) {
booklist.push_back(book);
}
bool hasNext() {
if (cid >=booklist.size())
{ return false;
}
else
{
return true;
}
}
Book*getNext() {
return booklist.at(cid++);
}
int count() {
return booklist.size();
}
Book* getItem(int i) {
return booklist.at(i);
}
itor* creat() {
itor1 = new Conitor(this);
return itor1;
}
};
#pragma once
#include
#include
using namespace std; class Book { string ISBN; string name; double price; public: Book(string isbn, string n, double p) { ISBN = isbn; //isbn=ISBN; name = n; //n=name; price = p; //p=price; } void display() { cout << "ISBN:" << ISBN <
#include"booklist.h" using namespace std; void main() { Book *book1 = new Book("010223", "Java", 80); Book *book2 = new Book("010323", "c#", 110); Book *book3 = new Book("012223", "c++", 180); //booklist.push_back(book1); //booklist.push_back(book2); //booklist.push_back(book3); //ector
list = booklist->getList(); //for (int i = 0;i
display(); //} Booklist*booklist = new Booklist(); booklist->addBook(book1); booklist->addBook(book2); booklist->addBook(book3); //while (booklist->hasNext()) { //Book*book = booklist->getNext(); //book->display(); //} itor*itor1 = booklist->creat(); while (itor1->hasNext()) { Book*book = itor1->getNext(); book->display(); } system("pause"); }