1) 바로 main 안에서 구현
import java.util.Scanner;
public class MyMathTest {
public static void main(String[] args) {
int radius;
final double PI = 3.14;
double area, round;
Scanner sc = new Scanner(System.in);
System.out.print("반지름 입력: ");
radius = sc.nextInt();
area = radius * radius * PI;
round = 2 * PI * radius;
System.out.printf("원의 넓이=%.1f\n 원의 둘레길이=%.1f\n", area, round);
}
}
2) 절차지향프로그래밍 (C언어 스타일)
import java.util.Scanner;
public class MyMathTest {
public static void main(String[] args) {
int radius;
double area, round;
Scanner sc = new Scanner(System.in);
System.out.print("반지름 입력: ");
radius = sc.nextInt();
area = calArea(radius);
round = calRound(radius);
System.out.printf("원의 넓이=%.1f\n원의 둘레길이=%.1f\n", area, round);
}
static double calArea(int r) {
final double PI = 3.14;
return r*r*PI;
}
static double calRound(int r) {
final double PI = 3.14;
return 2*PI*r;
}
}
3) 객체지향프로그래밍
1. 추상화
원
상태(필드, 속성) : 반지름
동작 : 넓이, 둘레길이
2. UML
Cricle
---------------------------------
- radius : int
+ calArea() : double
+ calRound() : double
+ setRadius(int r) : void
+ toString() : String
---------------------------------
3. UML을 토대로 클래스 생성
public class Circle {
int radius;
static final double PI = 3.14;
public double calArea() { // 필드에 r이 있으니 매개변수가 따로 필요없다. 객체지향의 장점이다. 전달값을 줄일수가있따
return radius*radius*PI;
}
public double calRound() {
return 2*PI*radius;
}
public void setRadius(int r) {
radius = r;
}
public String toString() {
return "Circle[radius="+ radius+ "]";
}
}
4. 객체를 이용해 완성
import java.util.Scanner;
public class MyMathTest {
public static void main(String[] args) {
int radius;
double area, round;
Scanner sc = new Scanner(System.in);
Circle myCircle = new Circle();
System.out.print("반지름 입력: ");
radius = sc.nextInt();
myCircle.setRadius(radius);
area = myCircle.calArea();
round = myCircle.calRound();
System.out.printf("원의 넓이=%.1f\n원의 둘레길이=%.1f\n", area, round);
System.out.println(myCircle);
}
}
댓글 없음:
댓글 쓰기