자동차객체 학사시스템객체
- 속성(특성) : 브랜드, 소유주, 색상, 속도
- 속성(특성) : 교수, 학생
- 기능(행위) : 달린다, 멈춘다, 기름을 더 넣는다
- 기능(행위) : 학점을 조회하다, 강좌를 개설하다, 학생을 조회하다
위와 같이 저러한 객체들은 어떠한 행동, 행위들을 한다
그런것들을 코드를 객체모델링 화 할려면 아래와 같은 단계를 거쳐야한다
객체모델링 3단계
1 객체의 속성과 기능 얻기
2 객체를 클래스 선언하기
3 객체 생성하기
-변수의 종류(위치에 따른 구분)-
-멤버변수 : method의 중괄호 (즉, 블록) 바깥쪽에 선언된 변수
-매개변수 : method의 소괄호에 선언된 변수
-로컬변수 : method의 중괄호 (즉, 블록) 안쪽에 선언된 변수
class A{
int a=100; // 멤버변수
void method(int b){ // 매개변수
int c=300; // 로컬변수
} }
-멤버변수, 로컬변수, 매개변수 활용법- ( 같은 클래스 내에서 멤버변수 및 로컬변수 선언 활용 )
이름 : 김상진, 지역 : 부산, 학교 : 내성초등학교, 학년 : 5
위의 정보로 코드를 작성하는데 객체모델링을 실시하자
class Location{ // method는 처음 객체 설정이 매우 중요
String name; // 객체를 파악해서 클래스를 설정하고 추후 호출문에서 객체 생성할 때를 생각해야 한다
} // 객체는 지역, 학교, 어린이 3가지로 나눌 수 있으며 이것을 클래스 명으로 설정하자
class School{ // 어린이에 대한 정보는 멤버변수로 지정한다. 이때 학교 이름, 지역 이름도 해당된다.
String name; // 이러한 클래스 분류 과정은 객체 지향적 언어로써 누구든 알기 쉽게 하는 것에 있다.
}
class Child{ // 이처럼 멤버변수에 지역, 학교, 학년, 이름이 선언되어있는 것을 알 수 있으며
Location location; // 멤버변수에 값을 선언하지 않는 이유는 한번 값을 지정하면 호출문에서 값을 전달할 때
// 기존의 값이 무의미하기 때문이다
String name; // 클래스 내에서 멤버변수는 “어디서든” 사용할 수 있으며, “어디서든” 재할당할 수 있다
int grade; // 또 한 호출 되지 않는 상황에 여러 정보가 할당되어있는 것은 좋은 코드가 될 수 없다
School school;
void setValue(String n, int g, School s, Location l){
name=n; // 매개변수 중 클래스 변수는 클래스 주소만 저장할 수 있다
grade=g;
school=s; // School s = v3 이 되고 즉, School s=new School(); 되므로
location=l; // s는 객체 생성한 변수가 되고 다시 school에 저장되어
// method printlnfo school.name을 호출 할 수 있다
}
void printInfo(){
System.out.println("이름 : "+name); // 호출문에서 할당한 멤버변수를 출력한다
System.out.println("지역 : "+location.name); // 이때 school은 School의 객체 생성된 변수이므로
System.out.println("학교 : "+school.name); // school.name 멤버변수를 호출할 수 있다
System.out.println("학년 : "+grade); // 멤버변수 호출문 = 객체생성변수. 멤버변수
}
class O{
public static void main(String[] args){
Location v2=new Location(); v2.name="부산"; // 객체 생성된 변수를 이용하여
School v3=new School(); v3.name="내성초등학교"; // 클래스 멤버변수의 값을 할당한다
Child v1=new Child(); v1.name=“김상진”;
v1.setValue( “김상진”, 6, v3, v2 );
v1.printInfo();
}
}
- 멤버변수의 활용예문 ( 로컬변수에서 다른 클래스 멤버변수 선언 활용 ) -
class Car{
String color="red";
}
class Factory{
void changeColor(Car o, String color){
o.color=color; // method 호출문으로 매개변수 car1, pink가 저장된다
// o.color (car1.color) 멤버변수에 pink가 저장한다는 의미있는데
}
}
class O{
public static void main(String[] args){
Car car1=new Car(); // 같은 클래스의 객체생성을 여러 번 할 경우
Car car3=new Car(); // 서로 다른 객체의 주소(변수)가 갖게 되고
Factory factory=new Factory(); // 멤버변수의 값 또 한 서로 다른 값을 선언할 수 있다
factory.changeColor(car1,"pink");
factory.changeColor(car3,"green");
System.out.println(car1.color);
System.out.println(car3.color);
}
}
멤버변수의 활용예문 ( 배열 객체생성 & 배열 길이, for문 활용법 ) - 주소 전달 방식
class Car{
String color="red";
}
class Factory{
void changeColor(ACar[] array, String[] cArray){
int len=array.length; // 객체(자동차)가 추가로 생산이 된다고 한다면
for(int a=0; a<len; a++) // 객체 생성된 변수를 배열로 묶은 배열의 변수를 활용하여
array[a].color=cArray[a]; // 멤버변수의 값을 할당하는 차이가 있다.
}
}
class P{
public static void main(String[] args){ // 위의 방식과 다르게 주소 전달하는 방식으로
Car car1=new Car(); // 객체 생성된 car1과 car2를 배열로 묶은 변수(array) 와
Car car3=new Car(); // color 정보를 배열로 묶은 변수( cArray )로
Factory factory=new Factory(); // method changeColor 매개변수 값을 선언하고
Car[] array={car1,car3}; // 매개변수로 재활당 된 변수는 배열의 길이를 구하고
String[] cArray={"pink","green"}; // for 문 실행으로 array[a].color=cArray[a]; 값을 할당한다
factory.changeColor(array,cArray);
System.out.println(car1.color); // pink
System.out.println(car3.color); // green
}
}
class N{ int a=100; }
class Q{ String a="aaa"; }
class R{
void test(N v1, Q v2){ // 위와 같이 주소 전달 방식으로 클래스 주소를 전달한다.
System.out.println(v1.a); // 100 // 호출문에 객체생성 된 변수 o1, o2를 활용하여
System.out.println(v2.a); // aaa // test method 매개변수에 재할당하여 다른 클래스 멤버변수를 호출
}
}
class S{
public static void main(String[] args){
N o1=new N();
Q o2=new Q();
R o3=new R();
o3.test(o1,o2);
}
}
멤버변수의 활용예문 ( return, 배열, 명령행 매개변수, 연산자 ) - 값 전달 방식
class Calculator{
int[] operate(int a, int b){
return new int[]{
a+b, a-b, a*b, a/b // 연산자를 return하여 v3를 호출하고 for문 활용으로 출력
};
}
}
class A{
public static void main(String[] args){
Calculator o=new Calculator();
Calculator o1=new Calculator();
int v1=Integer.parseInt(args[0]);
int v2=Integer.parseInt(args[1]);
int[] v3=o.operate(v1,v2); // 명령행 매개변수의 지정 값이
// method 매개변수 값으로 지정되어 출력문에 영향을 준다
String[] s1={"합","차","곱","몫"};
String[] s2={"+","-","*","/"};
for(int i=0; i<4; i++){
System.out.println(s1[i]+":"+v1+s2[i]+v2+"="+v3[i]);
}
}
}
객체모델링은 메서드 선언과 호출 그리고 변수들을 잘 활용하여야 한다
처음은 익숙하지않아 어떻게 선언해야할지도 모르지만 호출문을 보고 선언문을 작성해보고
선언문을 보고 호출문을 작성하는 연습을 한다면 반환형 메서드, 무반환형 매서드등 여러가지로
익숙해질 수 있을것이다
2020/06/11 - [Java/Java 입문] - [Java] 메서드 선언과 호출, 반환형과 무반환형 method 활용
[Java] 메서드 선언과 호출, 반환형과 무반환형 method 활용
-method method 선언과 호출- 1. 반환형이 있는 method 자료형 method 변수(){ return 값; } 호출문 ( 자료형 변수=method변수.(); ) 호출하려는 method와 관련이 있는 클래스에 대한 객체생성이 필요 2. 반환형이..
tantangerine.tistory.com
'IT_Web > Java' 카테고리의 다른 글
[Java] 접근제어자 public, static, 기타제어자 활용법 (0) | 2020.06.18 |
---|---|
[Java] 상속자, 은닉변수, super(), this의 활용 (0) | 2020.06.14 |
[Java] 메서드 선언과 호출, 반환형과 무반환형 method 활용 (0) | 2020.06.11 |
[Java] 명령행 매개변수 cmd창에 직접 값넣기 (0) | 2020.06.11 |
[Java] 삼항연산자 (논리연산자, 메서드) 활용법 (0) | 2020.06.10 |