728x90
반응형

자동차객체 학사시스템객체

- 속성(특성) : 브랜드, 소유주, 색상, 속도

- 속성(특성) : 교수, 학생

- 기능(행위) : 달린다, 멈춘다, 기름을 더 넣는다

- 기능(행위) : 학점을 조회하다, 강좌를 개설하다, 학생을 조회하다

 

위와 같이 저러한 객체들은 어떠한 행동, 행위들을 한다

그런것들을 코드를 객체모델링 화 할려면 아래와 같은 단계를 거쳐야한다

 

 

객체모델링 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

 

 

728x90
반응형

+ Recent posts

Powered by Tistory, Designed by wallel