[Java] 객체지향1

쓰옹·2022년 11월 19일
0

📙 Java 잡아🤏

목록 보기
7/25
post-thumbnail

객체지향

  • 객체들 간의 상호작용을 코드로 표현
  • 캡슐화가 중요
  • 유지보수가 쉽고 확장성이 좋음

객체지향 프로그래밍

  • 객체를 먼저 정의하고
  • 각 객체가 어떤 기능을 제공하고 객체 간 협력을 어떻게 구현할것인지 고민

객체(Object)

: 의사나 행위가 미치는 대상

  • 소프트웨어 세계에서 구현할 대상
  • 속성을 가지고 있으면서 식별 가능한 것
  • 객체모델링
    : 현실세계의 객체를 소프트웨어 객체로 설계하는 것
    • 소프트웨어 객체의 필드와 메소드로 정의

클래스(class)

  • 객체의 속성과 기능을 코드로 구현 == '클래스를 정의한다'
  • 형식
    (접근제어자) class 클래스 이름 {
    	멤버 변수;  //변수로 선언하는 클래스 속성
       메서드;
    }
  • 모든 요소가 클래스 내부에 있어야 함
  • 이름은 대문자로 시작

클래스 생성 & 인스턴스

클래스형 변수이름 = new 생성자;

  • 메모리 공간(힙 메모리) 할당
  • 클래스를 정의하고 생성자 new를 통해 인스턴스를 생성
  • 예시
    Student studentKim = new Student();
    • Student 클래스 자료형
    • studentKim 참조변수 == 인스턴스
    • new Student(); Student 클래스 생성

    인스턴스

    : 생성된 클래스의 객체를 메모리에 할당한 것
  • 여러 개 생성 가능
  • 메모리 주소값(참조 값) 할당

멤버 변수 (member variable)

: 클래스 내부에 선언하여 객체 속성을 나타내는 변수

  • 속성(property), 특성(attribute) 등으로 표현하기도 함
public class Student {      //학생 객체
	int studentID;           //
    String studentName;      //    멤버변수
    int grade;               //
    String address;          //
}
  • 속성에따라 알맞은 자료형을 선언해줘야함

메소드

: 함수
: 멤버 변수를 사용하여 클래스 기능을 구현한 것

  • 멤버함수(member function) 이라고도 함
  • 형식
    함수반환형 함수이름 (매개변수) {  //매개변수가 필요 없는 함수도 있음
    	실행문;
       	retrun 반환값;   //반환값이 없는 함수도 있음
     }
     
     // void: 비어있다는 의미로 '반환할 값이 없다'는 뜻의 예약어
     void 함수이름 (매개변수) {  
     	실행문;
     	(return;)  //반환값이 없는 상태에서 함수 수행 종료를 목적으로 사용
     }
  • 객체의 동작을 함수로 나타냄 == 작업을 수행하는 코드의 묶음
  • 재사용성, 중복된 코드 제거, 프로그램 구조화
public class Student {     
	int studentID;           
    String studentName;      
    int grade;               
    String address;         

	public void showStudentInfo() {                      //
    	System.out.println(studentName + "," + address); //  메소드
    }                                                    //
}
  • 메소드명 지을 땐 동사로 시작하고 camelCase로 작성
  • 필요한 기능 함수를 만들고 그에 맞는 하나의 기능을 구현하는 것이 중요

패키지(package)

: 클래스 파일의 묶음

  • 프로젝트 전체 소스코드를 구성하는 계층구조
  • 계층 구조를 잘 구성해야 소스코드 관리와 유지보수가 편리
  • 클래스 이름이 같다고 해도 패키지 이름이 다르면 다른 클래스임
    == 다른 패키지에 속해 있으면 클래스 이름이 같아도 상관 無

main() 함수

: 자바가상머신(Java Virtual Machine;JVM)이 프로그램을 시작하기 위해 호출하는 함수

  • not 메소드
  • 클래스가 제대로 수행되는지 알아보기 위해 main()함수 생성
class Calculation {               //클래스 선언
    int add (int x, int y) {
        return x + y;
    }
    int subtract (int x, int y) {
        return x - y;
    }
}

public class Main {     
    public static void main(String[] args) {
        Calculation calculation = new Calculation();  //Calculation 클래스 생성
        int addResult = calculation.add(1, 2);
        int subtractResult = calculation.subtract(5, 3);

        System.out.println(addResult);        //3
        System.out.println(subtractResult);   //2
    }
}




용어정리

용어설명
객체객체 지향 프로그램의 대상
클래스객체를 코드로 만든 상태. 객체의 설계도 느낌
인스턴스객체가 메모리에 생성된 상태
멤버변수클래스의 속성, 특성
메소드멤버변수를 이용한 클래스의 기능 구현. 함수
참조변수메모리에 생선된 인스턴스를 가리키는 변수
참조 값생성된 인스턴스의 메모리 주소 값



🧐 reference

박은종, 『Do it! 자바 프로그래밍 입문』, 이지스퍼블리싱(주)

profile
기록하자기록해!

0개의 댓글