#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 {
vectorbooklist;
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);
//ectorlist = 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");
}