| 導購 | 订阅 | 在线投稿
分享
 
 
 

Java面向對象編程實例詳解

來源:互聯網  2008-05-19 06:33:25  評論

Java是一種面向對象的語言,是實現面向對象編程的強大工具。但如何在編程中實際運用並發揮其最大效能呢?本文通過一個實際Java程序的開發過程,詳細說明了如何使用面向對象實現Java編程。

我們要實現的Java應用程序是:當用戶輸入一個球體的半徑,程序將顯示該球體的體積與表面積。在您閱讀下文以前,請您自己思考一分鍾,您將如何設計該Java應用程序。

一、普通實現方法

我相信大多數程序員要實現上述功能的程序,非常迅速地、自信地將采用下面的實現代碼:

class Sphere

{

public static void main(String[] args)

{

EasyReader console = new EasyReader();

System.out.print("Enter the radius: ");

double radius = console.readDouble();

System.out.println("Radius = " + radius);

double volume = 4.0 / 3.0 * Math.PI * radius * radius * radius;

System.out.println("Volume = " + volume);

double surfArea = 4.0 * Math.PI * radius * radius;

System.out.println("Surface area = " + surfArea);

}

}

EasyReader類代碼如下:

import java.io.*;

public class EasyReader

{

protected String myFileName;

protected BufferedReader myInFile;

protected int myErrorFlags = 0;

protected static final int OPENERROR = 0x0001;

protected static final int CLOSEERROR = 0x0002;

protected static final int READERROR = 0x0004;

protected static final int EOF = 0x0100;

/**

* Constructor. Prepares console (System.in) for reading

*/

public EasyReader()

{

myFileName = null;

myErrorFlags = 0;

myInFile = new BufferedReader(

new InputStreamReader(System.in), 128);

}

/**

* Constructor. opens a file for reading

* @param fileName the name or pathname of the file

*/

public EasyReader(String fileName)

{

myFileName = fileName;

myErrorFlags = 0;

try

{

myInFile = new BufferedReader(new FileReader(fileName), 1024);

}

catch (FileNotFoundException e)

{

myErrorFlags |= OPENERROR;

myFileName = null;

}

}

/**

* Closes the file

*/

public void close()

{

if (myFileName == null)

return;

try

{

myInFile.close();

}

catch (IOException e)

{

System.err.println("Error closing " + myFileName + "\n");

myErrorFlags |= CLOSEERROR;

}

}

/**

* Checks the status of the file

* @return true if en error occurred opening or reading the file,

* false otherwise

*/

public boolean bad()

{

return myErrorFlags != 0;

}

/**

* Checks the EOF status of the file

* @return true if EOF was encountered in the previous read

* operation, false otherwise

*/

public boolean eof()

{

return (myErrorFlags & EOF) != 0;

}

private boolean ready() throws IOException

{

return myFileName == null || myInFile.ready();

}

/**

* Reads the next character from a file (any character including

* a space or a newline character).

* @return character read or null character

* (Unicode 0) if trying to read beyond the EOF

*/

public char readChar()

{

char ch = '\u0000';

try

{

if (ready())

{

ch = (char)myInFile.read();

}

}

catch (IOException e)

{

if (myFileName != null)

System.err.println("Error reading " + myFileName + "\n");

myErrorFlags |= READERROR;

}

if (ch == '\u0000')

myErrorFlags |= EOF;

return ch;

}

/**

* Reads from the current position in the file up to and including

* the next newline character. The newline character is thrown away

* @return the read string (excluding the newline character) or

* null if trying to read beyond the EOF

*/

public String readLine()

{

String s = null;

try

{

s = myInFile.readLine();

}

catch (IOException e)

{

if (myFileName != null)

System.err.println("Error reading " + myFileName + "\n");

myErrorFlags |= READERROR;

}

if (s == null)

myErrorFlags |= EOF;

return s;

}

/**

* Skips whitespace and reads the next word (a string of consecutive

* non-whitespace characters (up to but excluding the next space,

* newline, etc.)

* @return the read string or null if trying to read beyond the EOF

*/

public String readWord()

{

StringBuffer buffer = new StringBuffer(128);

char ch = ' ';

int count = 0;

String s = null;

try

{

while (ready() && Character.isWhitespace(ch))

ch = (char)myInFile.read();

while (ready() && !Character.isWhitespace(ch))

{

count++;

buffer.append(ch);

myInFile.mark(1);

ch = (char)myInFile.read();

};

if (count 0)

{

myInFile.reset();

s = buffer.toString();

}

else

{

myErrorFlags |= EOF;

}

}

catch (IOException e)

{

if (myFileName != null)

System.err.println("Error reading " + myFileName + "\n");

myErrorFlags |= READERROR;

}

return s;

}

/**

* Reads the next integer (without validating its format)

* @return the integer read or 0 if trying to read beyond the EOF

*/

public int readInt()

{

String s = readWord();

if (s != null)

return Integer.parseInt(s);

else

return 0;

}

/**

* Reads the next double (without validating its format)

* @return the number read or 0 if trying to read beyond the EOF

*/

public double readDouble()

{

String

  Java是一種面向對象的語言,是實現面向對象編程的強大工具。但如何在編程中實際運用並發揮其最大效能呢?本文通過一個實際Java程序的開發過程,詳細說明了如何使用面向對象實現Java編程。   我們要實現的Java應用程序是:當用戶輸入一個球體的半徑,程序將顯示該球體的體積與表面積。在您閱讀下文以前,請您自己思考一分鍾,您將如何設計該Java應用程序。   一、普通實現方法   我相信大多數程序員要實現上述功能的程序,非常迅速地、自信地將采用下面的實現代碼:   class Sphere   {   public static void main(String[] args)   {   EasyReader console = new EasyReader();   System.out.print("Enter the radius: ");   double radius = console.readDouble();   System.out.println("Radius = " + radius);   double volume = 4.0 / 3.0 * Math.PI * radius * radius * radius;   System.out.println("Volume = " + volume);   double surfArea = 4.0 * Math.PI * radius * radius;   System.out.println("Surface area = " + surfArea);   }   }   EasyReader類代碼如下:   import java.io.*;   public class EasyReader   {   protected String myFileName;   protected BufferedReader myInFile;   protected int myErrorFlags = 0;   protected static final int OPENERROR = 0x0001;   protected static final int CLOSEERROR = 0x0002;   protected static final int READERROR = 0x0004;   protected static final int EOF = 0x0100;   /**   * Constructor. Prepares console (System.in) for reading   */   public EasyReader()   {   myFileName = null;   myErrorFlags = 0;   myInFile = new BufferedReader(   new InputStreamReader(System.in), 128);   }   /**   * Constructor. opens a file for reading   * @param fileName the name or pathname of the file   */   public EasyReader(String fileName)   {   myFileName = fileName;   myErrorFlags = 0;   try   {   myInFile = new BufferedReader(new FileReader(fileName), 1024);   }   catch (FileNotFoundException e)   {   myErrorFlags |= OPENERROR;   myFileName = null;   }   }   /**   * Closes the file   */   public void close()   {   if (myFileName == null)   return;   try   {   myInFile.close();   }   catch (IOException e)   {   System.err.println("Error closing " + myFileName + "\n");   myErrorFlags |= CLOSEERROR;   }   }   /**   * Checks the status of the file   * @return true if en error occurred opening or reading the file,   * false otherwise   */   public boolean bad()   {   return myErrorFlags != 0;   }   /**   * Checks the EOF status of the file   * @return true if EOF was encountered in the previous read   * operation, false otherwise   */   public boolean eof()   {   return (myErrorFlags & EOF) != 0;   }   private boolean ready() throws IOException   {   return myFileName == null || myInFile.ready();   }   /**   * Reads the next character from a file (any character including   * a space or a newline character).   * @return character read or null character   * (Unicode 0) if trying to read beyond the EOF   */   public char readChar()   {   char ch = '\u0000';   try   {   if (ready())   {   ch = (char)myInFile.read();   }   }   catch (IOException e)   {   if (myFileName != null)   System.err.println("Error reading " + myFileName + "\n");   myErrorFlags |= READERROR;   }   if (ch == '\u0000')   myErrorFlags |= EOF;   return ch;   }   /**   * Reads from the current position in the file up to and including   * the next newline character. The newline character is thrown away   * @return the read string (excluding the newline character) or   * null if trying to read beyond the EOF   */   public String readLine()   {   String s = null;   try   {   s = myInFile.readLine();   }   catch (IOException e)   {   if (myFileName != null)   System.err.println("Error reading " + myFileName + "\n");   myErrorFlags |= READERROR;   }   if (s == null)   myErrorFlags |= EOF;   return s;   }   /**   * Skips whitespace and reads the next word (a string of consecutive   * non-whitespace characters (up to but excluding the next space,   * newline, etc.)   * @return the read string or null if trying to read beyond the EOF   */   public String readWord()   {   StringBuffer buffer = new StringBuffer(128);   char ch = ' ';   int count = 0;   String s = null;   try   {   while (ready() && Character.isWhitespace(ch))   ch = (char)myInFile.read();   while (ready() && !Character.isWhitespace(ch))   {   count++;   buffer.append(ch);   myInFile.mark(1);   ch = (char)myInFile.read();   };   if (count 0)   {   myInFile.reset();   s = buffer.toString();   }   else   {   myErrorFlags |= EOF;   }   }   catch (IOException e)   {   if (myFileName != null)   System.err.println("Error reading " + myFileName + "\n");   myErrorFlags |= READERROR;   }   return s;   }   /**   * Reads the next integer (without validating its format)   * @return the integer read or 0 if trying to read beyond the EOF   */   public int readInt()   {   String s = readWord();   if (s != null)   return Integer.parseInt(s);   else   return 0;   }   /**   * Reads the next double (without validating its format)   * @return the number read or 0 if trying to read beyond the EOF   */   public double readDouble()   {   String
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
王朝網路微信公眾號
微信掃碼關註本站公眾號 wangchaonetcn
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有