728x90
반응형
오늘은 Method 다음 Class의 개념과 class에서 쓰이는 변수들의 특징에 대해 배웠다.
우선 class를 사용하여 여러 변수, method를 묶어주는것 부터 객체지향 프로그래밍의 시작이라고 보면 될 것 같다.
객체지향 프로그래밍을 하는 이유는
1. 관리가 용이해서
2. 수정(변경)이 편해서
3. 재사용성이 높아서
4. 신뢰성이 높아서
등의 이유가 있었다.
/*
* =================
* 1. 관리가 용이
* 2. 수정(변경)이 편하다
* 3. 재사용이 좋다
* 4. 신뢰성이 좋다
* =================
*
*
* class의 구성요소(변수+메소드)
* =============
* = 변수
*
* 프로그래머가 직접 생성 => class {}안에 생성
* ====================================================
* = 멤버변수 (인스턴스변수) : new를 사용시마다 따로 메모리 만들어진다
* = 공통변수, 공유변수 : JVM에서 자동으로 생성되는 변수(앞에 static)
* ====================================================
* = 지역변수 : 메소드안에서만 사용
* for(int i =0~) ===> 메소드가 종료하면 자동으로 사라지는 변수
* => 메모리 자체에서 관리 {}이 끝나면 자동으로 사라진다
* = 메소드 : 멤버변수를 이용해서 기능을 설정
* = 생성자 : 멤버변수에 대한 초기화를 담당
*
* 여러개의 데이터를 모아서 처리 (클래스)
* 저장하는 방법
* 클래스명 변수명=new 클래스명();
* 데이터를 읽어오는 방법
* 변수명.변수, 클래스명.변수 => static
* ========
* 인스턴스변수
* ==============================================
* 예)
* Tv t; ==> {데이터 channel}
* ====t====
* ==> 전체를 모은 메모리 주소 100
* =========
* t=new TV();
* ========100=======
* ------channel-----
* 0 ===> 100 -> channel ===> t.channel
* ------------------
* ==================
*
* TV t1=new TV();
* == ==
* ====t1====
* 200 ====> t1.channel
* ==
* 주소명 (메모리 => 주소, 번지) 0~
* ==========
* ======= 200 ======
* ------channel-----
* 0 ===> 200 -> channel ===> t.channel
* ------------------
* ==================
*
* class A
* {
* int a=100;
* void display()
* {
* int b=10; // 지역변수
* if(b==10)
* {
* int c=100; // 지역변수
* }//c변수 사용영역
* } // b변수 사용영역
* void display2(int d)
* {
* int e=10;
*
* // d,e,a ==> 매개변수
* }
* void display3()
* {
* int a=10;
* System.out.println("a="+a); // 10
* this.a -> class에 있는 변수를 가르키는 것. (지역변수 a가 아니라 class에 있는 a)
* }
*
* } // a변수는 사용
*
*
*/
// public으로 시작하는 클래스는 반드시 1개만 사용 (저장명은 반드시 public class로 시작하는 클래스명이 저장)
객체의 사전적 뜻은 '실재로 존재하는 것'
즉 프로그래밍에서는 클래스에 정의된 내용대로 [메모리에 생성된 것]을 뜻한다.
예를 들어 TV설계도(클래스)는 TV라는 제품(객체)을 정의한 것이며, TV(객체)를 만드는데 사용된다.
클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화(instantiate)라고 하며, 어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스(instance)라고 한다.
클래스 ---> (인스턴스화) ---> 인스턴스(객체)
아래는 클래스에서 인스턴스를 생성하고, 참조변수들을 통해 멤버변수들을 저장해준 예제이다.
참조변수=a, 멤버변수=1712, "시크제노맘" 등등
public class 쉐프 {
static String site="만개의 레시피";
int ranking;
String chefName;
int recipeCount;
int clip;
int view;
int follower;
// 21,771 => String => int => , => ""
public static void main(String[] args) {
쉐프 a = new 쉐프();
a.ranking=1;
a.chefName="시크제노맘";
a.recipeCount=1712;
a.clip=1027593;
a.view=33561876;
a.follower=21771;
쉐프 a1=new 쉐프();
a1.ranking=2;
a1.chefName="큐티인준맘";
a1.recipeCount=249;
a1.clip=603334;
a1.view=12912223;
a1.follower=15335;
System.out.println("====="+a.site+"의 쉐프 "+a.chefName+"======");
System.out.println("랭킹:"+a.ranking+"위");
System.out.println("레시피 수:"+a.recipeCount);
System.out.println("클립 수:"+a.clip);
System.out.println("뷰 수:"+a.view+"view");
System.out.println("팔로워 수:"+a.follower+"명");
System.out.println("====="+a1.site+"의 쉐프 "+a1.chefName+"======");
System.out.println("랭킹:"+a1.ranking+"위");
System.out.println("레시피 수:"+a1.recipeCount);
System.out.println("클립 수:"+a1.clip);
System.out.println("뷰 수:"+a1.view+"view");
System.out.println("팔로워 수:"+a1.follower+"명");
}
}
어떤 변수를 전역에서 쓰는 static 변수로 써야할지, 어떤 변수들은 지역변수로 메소드 안에서 호출하고 버려야할지와 같은 것들을 잘 생각하면서 변수 선언을 해줘야 한다.
오늘은 변수 선언만 배워서 아마 내일 더 복잡한 메소드를 배울 예정이다
조금 긴장된다
728x90
반응형
'programming > Gukbi' 카테고리의 다른 글
국비 교육 14일차 - 생성자 (0) | 2021.01.13 |
---|---|
국비 교육 13일차 - Class method (0) | 2021.01.12 |
국비 교육 11일차 - Method (0) | 2021.01.10 |
국비 교육 10일차 - 달력만들기 + 숫자 야구 게임 (0) | 2021.01.07 |
국비 교육 9일차 - 배열 활용 (2) | 2021.01.06 |