Java·Î PolynomialÀ» ÇÏ·Á¸é....


[ ´ÙÀ½ ±Ûµé ] [ À̾ ±Û¿Ã¸®±â(´äÇϱâ) ] [ ÀÚ¹Ù ¹¯°í ´äÇϱâ ]

±Û¾´ÀÌ :ÀÌ¿ø¿µ 1998³â 11¿ù 03ÀÏ 15:56:25

In Reply to: [Áú¹®] non-static reference... posted by ÀÌÈ«¶ô on 1998³â 11¿ù 02ÀÏ 13:53:34:

errorÀÇ Á÷Á¢ÀûÀÎ ¿øÀÎÀº ´ÙÀ½°ú °°½À´Ï´Ù.


public static void main(String args[])¿¡¼­
¾Æ·¡ ºÎºÐÀ» °íÄ¡¼Å¾ß ÇÕ´Ï´Ù.
...
public static void main(String args[]) {
poly poly1= new poly(3.0,2,new poly(1.0,1,new poly(1.0,0)));
poly1.print();
add(poly1, poly1).print(); <== ÀÌ ºÎºÐ!!
}
...
´ÙÀ½°ú °°ÀÌ °íÄ¡¼¼¿ä.
===>
(poly1.add(poly1, poly1)).print();
ȤÀº
poly sum = poly1.add(poly1, poly1);
sum.print();



Á¶¾ð:
1. Naming Rule
¸ðµç ClassÀ̸§Àº ùÀÚ¸¦ ´ë¹®ÀÚ·Î ÇϵÇ
°¡´ÉÇÑ ¾àÀÚ¸¦ ¾²Áö ¸¶¼¼¿ä.
Áï Polynomial.class·Î »ç¿ëÇϼ¼¿ä.


2. ¸ðµç classÀÇ instanceÀÇ reference¿Í method´Â ùÀÚ¸¦
¼Ò¹®ÀÚ·Î ½ÃÀÛÇϼ¼¿ä.
Áï,
Polynomial p1 = new Polynomial("2x^2+3x+3");
Polynomial p2 = new Polynomial("4x^4+2x+5");
System.out.println("polynomial1: " + p1.toString());
System.out.println("polynomial2: " + p2.toString());


3. Á»´õ ½Å°æÀ» ¾²¼Å¼­ OO°³³ä¿¡ ¸Â°Ô ÇÑ ¹ø
ÇØ º¸½ÃÁö¿ä..
java.lang.Math Class¸¦ Àß »ý°¢ÇØ º¸¼¼¿ä.


Áï Polynomial.class´Â polynominalÀ» ÀúÀå/ÃßÃâ/printÇÒ ¼ö
ÀÖ´Â method¸¸ °¡Áöµµ·Ï ÇϽðí,
ExtendedMath.class´Â PolynomialÀ» add, substract,
multiply, divideÇÏ´Â static method¸¦ °®µµ·Ï ÇÏ´Â °Ì´Ï´Ù.
Áï ´ÙÀ½°ú °°Àº ÇüÅÂÀÇ ¹®¹ýÀÌ ³ª¿À°ÚÁÒ?


...
Polynomial p1 = new Polynomial("2x^2+3x+3");
Polynomial p2 = new Polynomial("4x^4+2x+5");
Polynomial sum = ExtendedMath.add(p1, p2);
System.out.println("Summation: " + sum.toString());
...


4. ÀÌ·¸°Ô ÇÏ·Á¸é...???
À½..
Polynomial.class´Â ´ÙÀ½°ú °°Àº method°¡ ÀÖ¾î¾ß ÇÒ
°Í °°³×¿ä.
Constructions:
public Polynomial(); //new Polynomial();
public Polynomial(String p); // new Polynomial("2x^3+4x+1");
Methods:
public void set(String p); //p1.set("2x^3+4x+1");
public String toString(); // return "2x^3+4x+1";
public int[] getCoefficients(); // return [2,0,4,1];
public void setCoefficient(int index, int coeff);
public void addCoefficient(int index, int coeff);
public int getPower(); // return 3;


ExtendedMath class ´Â static methodµé¸¸ ÀÖÀ¸¸é
µÇ°ÚÁÒ.
Methods:
public static synchronized Polynomial add(Polynomial p1, Polynomial p2);
public static synchronized Polynomial substract(Polynomial p1, Polynomial p2);
public static synchronized Polynomial multiply(Polynomial p1, Polynomial p2);
public static synchronized Polynomial divide(Polynomial p1, Polynomial p2) throws Exception;
(divide´Â zero polynomial·Î ³ª´­ ¼ö ¾øÀ¸´Ï ExceptionÀ»
¹ß»ý½Ãų ¼öµµ ÀÖ¾î¾ßÁö¿ä.)


¾Æ¸¶ add method´Â ¾Æ·¡¿Í À¯»çÇϸ®¶ó »ý°¢µË´Ï´Ù.
[ExtendedMath.java]
...
public static synchronized Polynomial add(Polynomial p1, Polynomial p2)
{
Polynomial result = new Polynomial();
int maxPowersOfPoly1 = p1.getPower();
int maxPowersOfPoly2 = p2.getPower();


int[] coeffOfPoly1 = p1.getCoefficients();
int[] coeffOfPoly2 = p2.getCoefficients();


int maxPowerLength = java.lang.Math.max(maxPowersOfPoly1, maxPowersOfPoly2);


for(int i=maxPowerLength; i>=0; i--){
if ( i <= maxPowersOfPoly1 ) {
result.addCoefficient(i, coeffOfPoly1[i]); // i¹ø°ÀÇ PowerÇ׿¡ °è¼ö¸¦ add.
}
if ( i <= maxPowersOfPoly2 ) {
result.addCoefficient(i, coeffOfPoly2[i]); // i¹ø°ÀÇ PowerÇ׿¡ °è¼ö¸¦ add.
}
}
return result;
}


substract method´Â ¾Æ·¡¿Í ºñ½ÁÇÏÁö ¾ÊÀ»±î¿ä?
public static synchronized Polynomial substract(Polynomial p1, Polynomial p2)
{
Polynomial minusP2 = new Polynomial();

int maxPowersOfPoly2 = p2.getPower();
int[] coeffOfPoly2 = p2.getCoefficients();
for(int i=0;i<=maxPowersOfPoly2;i++){
minusP2.setCoefficient(i, - coeffOfPoly2[i]);
}


return ExtendedMath.add(p1,minusP2);
}


±× ¿Ü multiply´Â ±×´ÙÁö ¾î·ÆÁö ¾ÊÀ» °Ì´Ï´Ù. ÇÏÁö¸¸ divide°¡ ¹®Á¦ÁÒ?
¿­½ÉÈ÷ ÇØ º¸¼¼¿ä...
;)


Note: Polynomial class¿¡´Â Vector¸¦ ÀÌ¿ëÇϼ¼¿ä.
Áï,
[Polynomial.java]
public class Polynomial
{
Vector coefficients = null;
public Polynomial(){
coefficients = new Vector();
}
...
public void setCoefficient(int index, int coeff){
//¸¸¾à Vector sizeº¸´Ù Å« index¿¡ ³ÖÀ»·Á¸é size¸¦ ´Ã·Á¾ß °ÚÁÒ?
if ( coefficients.size() < index+1) coefficients.setSize(index+1);
coefficients.setElementAt(new Integer(coeff), index);
}
public void addCoefficient(int index, int coeff){
//¸¸¾à Vector sizeº¸´Ù Å« index¿¡ ³ÖÀ»·Á¸é size¸¦ ´Ã·Á¾ß °ÚÁÒ?
if ( coefficients.size() < index+1) coefficients.setSize(index+1);
int value = ((Integer)coefficients.elementAt(index)).intValue();
coefficients.setElementAt(new Integer(coeff + value), index);
}
//À½ ±×¸®±¸¿ä ¾Æ¸¶ ÇϽô٠º¸¸é °è¼ö°¡ 0ÀÎ ³à¼¸ÀÌ ¾Õ¿¡ ÀÖ´Â °æ¿ì´Â
//removeElementAt(index)·Î Á¦°Å ÇØÁÖ¾î¾ß ÇÒ °Å¿¹¿ä...
....






´ÙÀ½ ±Ûµé:



À̾ ±Û¿Ã¸®±â(´äÇϱâ)

À̸§:
E-Mail:
Á¦¸ñ:
³»¿ë:
HTML ÅÂ±× Æ÷ÇÔ ¿©ºÎ: HTML ¹®¼­ÀÏ °æ¿ì üũ
°ü·Ã URL(¼±ÅÃ):
URL Á¦¸ñ(¼±ÅÃ):
°ü·Ã À̹ÌÁö URL:


[ ´ÙÀ½ ±Ûµé ] [ À̾ ±Û¿Ã¸®±â(´äÇϱâ) ] [ ÀÚ¹Ù ¹¯°í ´äÇϱâ ]