home *** CD-ROM | disk | FTP | other *** search
Java Source | 1999-09-19 | 3.4 KB | 109 lines |
- /*
- * @(#)Book.java 1.1 98/10/03
- *
- * Copyright (c) 1997 Sun Microsystems, Inc. All Rights Reserved.
- *
- * This software is the confidential and proprietary information of Sun
- * Microsystems, Inc. ("Confidential Information"). You shall not
- * disclose such Confidential Information and shall use it only in
- * accordance with the terms of the license agreement you entered into
- * with Sun.
- *
- * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
- * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
- * PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES
- * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
- * THIS SOFTWARE OR ITS DERIVATIVES.
- *
- *
- */
-
- import java.io.*;
-
-
- /**
- * The Externalizable subclass.
- * Will save the state of its superclass by calling the superclass's
- * writeExternal and readExternal Methods from within its own writeExternal
- * and readExternal methods
- */
- public class Book extends ReadingMaterial implements Externalizable {
-
- private int numpages;
- private String name;
- private boolean ishardcover;
-
- // other relevant information and methods
- // .
- // .
- // .
-
- /**
- * mandatory public no-arg constructor
- */
- public Book() {
- super(); }
-
- public Book(int pages, String n, boolean hardcover, String author,
- String subject, int yearwritten) {
-
- super(author, subject, yearwritten);
- numpages = pages;
- name = n;
- ishardcover = hardcover;
- }
-
- /**
- * Mandatory writeExternal method.
- *
- * @serialData Saves state of its superclass by
- * calling its writeExternal method and
- * then save its own fields. Writes numpages field as int,
- * name field as an object and ishardcover field as a boolean.
- *
- * @see ReadingMaterial#writeExternal(ObjectOutput)
- */
- public void writeExternal(ObjectOutput out) throws IOException {
-
- // first we call the writeExternal of the superclass as to write
- // all the superclass data fields
- super.writeExternal(out);
-
- // now we take care of this class's fields
- out.writeInt(numpages);
- out.writeObject(name);
- out.writeBoolean(ishardcover);
- }
-
- /**
- * Mandatory readExternal method. Will read in the data that we wrote out
- * in the writeExternal method. Restores the state of the superclass
- * first by calling the superclass's readExternal method. Then, restores
- * its own fields. These fields MUST BE IN THE SAME ORDER AND TYPE as we
- * wrote them out.
- * By the time, readExternal is called, an object of this class has already
- * been created using the public no-arg constructor, so this method is
- * used to restore the data to all of the fields of the newly created
- * object.
- */
- public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
-
- // first call the superclass external method
- super.readExternal(in);
-
- // now take care of this subclass's fields
- numpages = in.readInt();
- name = (String)in.readObject();
- ishardcover= in.readBoolean();
- }
-
- /**
- * Prints out the fields. used for testing!
- */
- public String toString() {
- return("Name: " + name + "\n" + "Author: " + super.getAuthor() + "\n" + "Pages: "
- + numpages + "\n" + "Subject: " + super.getSubject() + "\n" + "Year: " + super.getYearwritten() + "\n" );
- }
- }
-