ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] 객체지향언어 입문
    프로그래밍/Java 2022. 3. 16. 19:30
    반응형

    목차

    • 객체란?
    • java 객체지향언어의 클래스 
    • 클래스 내용 표시조건
    • 생성자, 인스턴스, 함수, 멤버변수, 지역변수

     

    객체란?

    객체는 일상생활에서 표현 할 수 있는 단위라고 생각하고 있습니다. 학생이 도서관을 가서 3권의 책을 빌렸다. 라는 문장이 있을 때 학생, 도서관, 책이라는 것이 객체로 볼 수 있습니다.

     

    java 객체지향언어의 클래스 

    객체 클래스를 만들때 객체의 내용을 파악하고 그 안에 표기해야할 필요한 정보들(이하 속성들(=필드))을 정의하여 사용하는 것이라고 생각하시면 됩니다. 학생을 예로 들면 학생이라는 클래스가 만들 수 있고, 그 안에 학생번호, 학생이름, 성별, 나이, 빌린책id 등이 속성으로 가질수 있습니다.

     

    //클래스
    public class Student {
    	//속성(멤버 변수)
    	int studentNumber;
    	String studentName;
    	String studentAge;
    	String studentGender;
    	int borrowBookIds;
    }

    학생이라는 클래스를 만들고 그 안에 속성(특성)을 정의하여 정의 해놓은 예입니다.

    public class Order {
    	
    	int orderId;
    	String buyerId;
    	String sellerId;
    	int productId;
    	String orderDate;
    }

    제품을 살때 order는 이런식으로 객체 생성이 가능합니다.

     

     

    클래스 내용 표시 조건 

    클래스 명칭을 정의 할 때는 객체를 파악하고 멤버 변수를 정의 하는 것도 중요하지만 몇가지 규약이 있습니다. 

    • class를 만들 때 클래스는 여러개 존재 할 수 있다, 하지만 public 클래스는 하나이다.
    • public class 는 대문자로 시작하며 java파일 명칭과 동일하다.
    • camel notation(카멜 표기법)방식으로 명명한다.

    프로그래밍에서 객체를 잘 인식하고 정의 하는 것이 매우 중요한 과제 이니 숙달하는 과정이 필요한 것 같습니다.

     

     

    생성자

    생성자는 객체를 생성될때 호출되는 내용으로 멤버변수가 이전에 할당되었던 것을 초기화 해주고 새로 생성되는 객체에 값을 넣어 실행 될 수 있도록 도와주는 역할을 한다.

    //student.java
    //클래스
    public class Student {
        //속성(멤버 변수)
        int studentNumber;
        String studentName;
        String studentAge;
        String studentGender;
        int borrowBookIds;
        
        //생성자 방법 1 
        public Student(int studentNumber, String studentName, String studentAge, String studentGender, int borrowBookIds ){
        	this.studentNumber = studentNumber;
            this.studentName = studentName;
            this.studentAge = studentAge;
            this.studentGender = studentGender;
            this.borrowBookIds = borrowBookIds;
        }
        //생성자 방법 2
        public Student()
        {
        	this.Student("no num", "no name", 0, "중립", 0)
        }
        
        //함수 
        public String StudentInfo(){
        	//지역변수
        	String nim = "님";
        
        	return studentNumber + "/" + studentName + nim + "/" + studentAge
        }
    }
    
    
    //main
    public main~~{
    
        //객체 클래스 생성(=인스턴스)
        Student student = new Student(1, "홍길동", 20, "남", 1);
        
        //객체(=인스턴스) 멤버 변수 호출 
        student.studentName
        //출력 
        //홍길동
        
        //객체 안에 함수 사용
        System.out.println(student.StudentInfo())
        //함수 안에서 멤버 변수 사용 및 지역변수 사용
        //출력
        //1/홍길동님/20
    }

    student라는 객체를 생성을 하면 main에서는 student라는 인스턴트가 생성 되었다고 얘기를 주로 합니다. 객체도 맞는 말입니다. 그리고 new Student에서 값을 넣어 사용하게 되면 인스턴스가 힙에 참조형 값으로 생성이 되고 할당된 멤버변수는 그 참조형 값(주소값)에 멤버변수들도 할당이 되어 내용을 사용할 수 있게 됩니다. 이해가 완전히 되지 않는다면 힙이라는 동적 메모리 관리에 대해 한번 공부해보세요.

    인스턴스

    객체클래스에서 작성했던 내용중 생성자를 호출하여 만든 객체 변수가 바로 인스턴스라고 합니다. 인스턴스 생성 방법은 2가지로 나뉠수 있습니다. 첫 번째 방법은 필요한 정보를 넣어 생성해주는 방법이고, 두 번째 방법은 내용이 없어 객체 내용을 기본값으로 생성 해줄 때 사용합니다.

    //main
    public main~~{
    
        //객체 클래스 생성(=인스턴스) 방법 1 
        Student student = new Student(1, "홍길동", 20, "남", 1);
      
      	//객체 클래스 생성(=인스턴스) 방법 2
        Student student = new Student();
    }

    멤버변수

    멤버 변수는 객체 내에 필요한 정보들(속성들(=필드들))이라고 보시면 됩니다. 필요한 정보들을 줄여서 멤버 변수, 멤버 변수들 이라고 합니다.

    //student.java
    //클래스
    public class Student {
        //속성(멤버 변수)
        int studentNumber;
        String studentName;
        String studentAge;
        String studentGender;
        int borrowBookIds;
    }

    함수 

    함수는 객체 안에서 필요한 로직을 구현 해 놓는 공간이라고 생각하시면 됩니다.

    //함수 
    public String StudentInfo(){
        //지역변수
        String nim = "님";
    
        return studentNumber + "/" + studentName + nim + "/" + studentAge
    }

    지역변수

    지역변수는 멤버 변수에 포함되지 않고 함수 내에서 사용하는 변수라고 보시면 됩니다. 속성처럼 계속 사용하지 않아도 되고 할당한 다음 로직이 끝나면 없어지는 용도일 때 사용됩니다.

    String nim = "님";

     

     

    여기까지 객체, 객체 생성법, 객체 내에서 사용되는 여러가지 용어들을 정리해 보았습니다. 다음에는 이런 객체가 여러가지 생성이 되고 각각의 내용이 엮여있을 때 속성값들이 어떻게 처리 되는지에 대한 내용 객체간의 협력에 대해 포스팅 해보도록 하겠습니다.

    반응형

    댓글

Designed by Tistory.