middlemoon

JAVA 객체지향 프로그래밍 I 본문

Develop/JAVA

JAVA 객체지향 프로그래밍 I

중대경 2023. 1. 12. 22:49

자바 복습 겸 공부한 것을 간단하게라도 기록해보고자 올려본다.

 

 

객체와 인스턴스

 

클래스 -> 인스턴스(객체)

클래스에서 인스턴스로 넘어가는 과정을 흔히 "인스턴스화" 시킨다고 말한다.

 

속성(property) 멤버변수, 특성, 필드, 상태

기능(function) 메서드, 함수, 행위

 

 

 

- 인스턴스의 생성과 사용

.

.

 

말 그대로 클래스에 있는 객체를 사용해주어 다른 클래스에서도 인스턴스(객체화)를 이용하여 사용하는 개념이라 생각하면 편하다.

 

인스턴스에 관한 코드

class Tv{
	//Tv의 속성(멤버변수)
    String color; //색상
    boolean power; //전원상태(on/off)
    int channel;
    
    //Tv의 기능(메서드)
    void power() { power = !power; }
    void channelUp() { ++channel; }
    void channelDown { --channel; }
    
   }
   
   class TvTest3 { 
   	public static void main(String args[]){
    	Tv t1 = new Tv();
        Tv t2 = new Tv();
        System.out.println(t1);
        System.out.println(t2);
        
        t2 = t1; // t1이 저장하고 있는 값 (주소) 을 t2에 저장.
        t1.channel = 7; // channel 값을 7로 한다.

 

인스턴스 부분에서 가장 중요한 개념이고,

 

- 객체 배열

.

.

 

 

Tv tv1, tv2, tv3 -> Tv[] tvArr = new Tv[3];

이런형식을 배열의 개념이라 할수 있다.

객체배열에 관한 코드

class TvTest4 {
	public static void main(String args[]){
    Tv[] tvArr = new Tv[3];
    
    // Tv객체를 생성해서 Tv객체 배열의 각 요소에 저장
    for(int i = 0; i < tvArr.length; i++){
    tvArr[i] = new Tv();
    tvArr[i].channel = i + 10; // tvArr[i]의 channel에 i+10을 저장
    
   }
   
   for(int i = 0 ; i < tvArr.length; i++){
   tvArr[i].channelUp(); // tvArr[i]의 메서드 호출. 채널 1증가
   System.out.printf("tvArr[%d].channel=%d%n",i, tvArr[i]/channel);
   }
  } //main의 끝
 }
 
 class Tv{
 	String color; //색상
    boolean power; //전원상태(on/off)
    int channel; //채널
    
    void power() {power = !power; }
    void channelUp() { ++channel; }
    void channelDown() { --channel; }
   }

`

비객체지향적 코드 객체지향적 코드
int hour1, hour2, hour3;
int minute1, minute2, minute3;
float second1, second2, second3;
Time t1 = new Time();
Time t2 = new Time();
Time t3 = new Time();
int[] hour = new new int[3];
int[] minute = new int[3];
float[] second = new float[3];
Time[] t = new Time Time[3];
t[0] = new Time();
t[1] = new Time();
t[2] = new Time();

 

물론 코딩을 할때도 비객체지향적인 코드를 무조건 쓰지말라 이런건 아니지만

다시한번 정리도 해볼겸 적게되었다. 

 

필자는 이번 단원은 객체지향적으로 무조건적인 기준을 맞춰 코딩을 하지만 비객체지향적인 코드로 짠다면 어떨지 다시 한번 생각하는 시간을 가져보려한다. 모르고 안쓰는것보다 알지만 안쓰는 전략(?)도 나름 중요하다 생각하기 때문에 정리해보았다 !

'Develop > JAVA' 카테고리의 다른 글

Day05.HashMap  (0) 2022.08.15
Day04.함수  (0) 2022.07.19
Day03. 배열  (0) 2022.07.18
Day02.변수  (0) 2022.07.10
Day01. 자동형변환  (0) 2022.07.08
Comments