클래스 라는 것은 관련있는 데이터들을 하나의 단위로 묶어두기 위한 것이다.
하지만 이것이 전부가 아니다.
서로 관련있는 데이터들 뿐 아니라, 그 데이타와 관련이 깊은 메서드 까지도 함께 묶어둘 수 있다.
이렇게 함으로써 코드의 응집도를 높이고 결합도를 낮출 수 있다.
객체란 ?
객체지향 프로그래밍에서 객체란 " 데이터 " + " 메서드 " 이다. 데이터는 객체의 정적 속성을
표현하고 메서드는 객체의 기능을 표현한다.
그렇다면 전의 예제의 함수들을 옮겨보겠다!
package section2;
public class Polynomial2 {
public char name; //다항식의 이름
public int nTerms = 0; // 항의 개수
public Term2[] terms; //항들의 배열
public int calcPolynomial(int x) {
int result = 0;
for (int i =0; i< nTerms; i++) {
result += (terms[i].calTerm(x));
}
return result;
}
public void printPolynomial() {
for(int i =0; i<nTerms; i++) {
terms[i].printTerm();
System.out.print("+");
}
System.out.println();
}
public void addTerm(int c, int e) {
int index = findTerm(e);
if(index != -1) {
terms[index].coef += c;
}
else {
int i = nTerms-1;
while(i >= 0 && terms[i].exp < e) {
terms[i+1] = terms[i];
i--;
}
terms[i+1] = new Term2();
terms[i+1].coef = c;
terms[i+1].exp =e;
nTerms++;
}
}
public int findTerm(int e) {
for(int i=0;i<nTerms && terms[i].exp >=e ;i++) {
if(terms[i].exp ==e) {
return i;
}
}
return -1;
}
}
다항 클래스
package section2;
public class Term2 {
public int coef;//계수
public int exp;//차수
public int calTerm(int x) {
return (int)(coef * Math.pow(x, exp));
}
public void printTerm() {
System.out.print(coef + "x^" +exp);
}
}
항 클래스
package section2;
import java.util.Scanner;
public class code7{
static Polynomial2 polys[] = new Polynomial2 [100];
static int n = 0;
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
while(true) {
System.out.print("$ ");
String command = kb.next();
if(command.equals("create")) {
char name = kb.next().charAt(0);
polys[n] = new Polynomial2();
polys[n].terms = new Term2[100];
polys[n].name = name;
polys[n].nTerms = 0;
n++;
}
else if(command.equals("add")) {
char name = kb.next().charAt(0);
int index = find(name);
if(index==-1) {
System.out.println("No such Polynomial exist");
}
else {
int c = kb.nextInt();
int e = kb.nextInt();
polys[index].addTerm(c,e);
}
}
else if(command.equals("calc")) {
char name = kb.next().charAt(0);
int index = find(name);
if(index==-1) {
System.out.println("No such Polynomial exist");
}
else {
int x = kb.nextInt();
int result = polys[index].calcPolynomial(x);
System.out.println(result);
}
}
else if(command.equals("print")) {
char name = kb.next().charAt(0);
int index = find(name);
if(index==-1) {
System.out.println("No such Polynomial exist");
}
else {
polys[index].printPolynomial();
}
}
else if(command.equals("exit")) {
break;
}
}
kb.close();
}
private static int find(char name) {
for(int i =0;i<n;i++) {
if(polys[i].name == name) {
return i;
}
}
return -1;
}
}
메인 클래스
'알고리즘 with 자바 > 자료구조' 카테고리의 다른 글
| 메서드와 생성자 3 (0) | 2021.06.24 |
|---|---|
| 메서드와 생성자 2 (0) | 2021.06.24 |
| 클래스 ,객체, 참조변수 5 (0) | 2021.06.23 |
| 클래스, 객체, 참조변수 4 (0) | 2021.06.22 |
| 클래스, 객체, 참조변수 3 (0) | 2021.06.22 |