2020.10.20 일지

0후·2020년 10월 20일
0

비트캠프

목록 보기
2/112

오늘의 요약

1. 클래스의 구조 (아무리 복잡한 코드라도, 이 구조를 벗어나지 않는다!, 이 구조는 무조건 기억해라!)
	(1) 패키지 선언 (무조건 한 개만 선언 가능!)
	(2) 임포트 구문
	(3) 클래스 선언 {
		(4) 멤버변수
		(5) 생성자
		(6) 메소드
	}

cf) 패키지 컴파일/실행 
#>javac -d . XX.java 
#>java aa.bb.XX

2. 주석(Comment)
	(1) 인라인 주석, 1라인만 주석 
	//
	(2) 여러라인 
	/*
	*/
	(3) 문서화 주석, API를 만들때 사용
	/** 
	*/

3. 실행 순서
	class C {
		C() { // 정의하는 것
			System.out.println("C()-1");
			m1(); // 메소드 호출
			System.out.println("C()-2");
		}
		void m1() { // void는 반환타입, 리턴타입임, 이건 메소드 정의
			System.out.println("m1()-1");
			m2();
			System.out.println("m1()-2");
		}
		void m2() {
			System.out.println("m2()-1");
		}
		public static void main(String[] args) 
		{
			System.out.println("main()-1");
			C c = new C(); // 호출하는 것, new를 붙이는 건 생성자를 호출 할 때 사용하는 문법임
			// 타입 변수 = new C(); 라고 하는 이유는 주어를 만들어서 다른 메소드도 실행시켜 주려고 주어를 부여하는 것임
			System.out.println("main()-2");
			c.m2(); // 이것처럼!
			System.out.println("main()-3");
		}
	}

4. 객체 지향 용어
	(1) 클래스(Class): 객체를 만드는 틀
		ex) 붕어빵틀
	(2) 객체(Object): 클래스를 통해 생성된 구현물 or 모든 것
		ex) 붕어빵
	(3) 생성자(Constructor): 클래스명과 똑같고 소괄호로 호출하는 특징이 있음, 객체가 생성될 때 하는 일(기능)
		ex) 붕어빵틀() 
	(4) 메쏘드(Method): 객체가 할 수 있는 일(기능)
		ex) 배부르게한다()
	(5) 속성(Attribute == 멤버변수) : 객체의 특성
		(존재 이유: 다양한 객체를 만들기 위해서)
		ex) String 앙꼬; (슈크림 붕어빵, 아이스크림 붕어빵)
(추가용어!) 메모리에 올라와 있는 무엇을 인스턴스라고 함

5. 클래스 붕어빵
   // 여기서, 5번 코딩을 하려면 클래스명을 다 다르게 지정해주어야 한다. 그럴려면 몇가지 조건이 필요하다.

5번에 관한 추가내용

class 붕어빵 {
	String 앙꼬;
	붕어빵() {
		앙꼬 = "팥";
	}
	붕어빵(String 앙꼬) {
		this.앙꼬 = 앙꼬;
	}
	void 배부르게하다() {
		System.out.println("배부르게 한다");	
	}
}

class 아줌마 {
	int 나이;
	붕어빵 빵1,2;
	아줌마() {
		나이 = 40;
	}
	void 굽는다() {1 = new 붕어빵();2 = new 붕어빵("설탕");
		System.out.println("붕어빵을 구웠다");
	}
}

class 손님 {
	int= 1000;
	String 이름 = "철수";

	붕어빵 구매한다(붕어빵 빵) {=- 300;

		return;
	}
}
class{
	public static void main(String[] args) 
	{
		아줌마 주인 = new 아줌마();
		System.out.print("나이가 " + 주인.나이 + "세인 아줌마가 ");
		System.out.println("붕어빵을 구웠다");
		주인.굽는다();
		System.out.print("첫번째 붕어빵의 앙꼬는 " + 주인.1.앙꼬 + "이고, ");
		System.out.print("두번째 붕어빵의 앙꼬는 " + 주인.2.앙꼬 + "이다.");
		System.out.println();

		손님 손 = new 손님();
		붕어빵 빵 =.구매한다(주인.1);
		System.out.println(.이름+"가 붕어빵(앙꼬:"+.앙꼬+")을 구매하고, "+.+"원이 남았어요");
		System.out.print("붕어빵은 "+.이름+"를 ");.배부르게하다();
	}
}

클래스를 다르게 하려면 붕어빵과 똑같은 조건을 가진 다른 명칭들이 필요함
1. 물건이 있어야 한다. ex) 붕어빵, / 애니메이션
1-1. 물건의 기능이 있어야 한다. ex) 배부르게 하다, / 재미를 준다
1-2. 물건의 속성이 있어야 한다. ex) 앙꼬, / 구동방식 / 스트리밍, 블루레이
2. 판매자가 있어야 한다. ex) 아줌마, / 배급사
2-1. 판매자의 기능이 있어야 한다. ex) 굽는다, / 컨텐츠를 만든다
2-2. 판매자의 속성이 있어야 한다. ex) 나이, / 주가
3. 구매자가 있어야 한다. ex) 손님, / 김민겸
3-1. 손님이 돈을 지불해야 한다. ex) 돈 얼마, / 돈 얼마
4. 이 모든 것을 만들어 줄 수 있는 전지적 시점의 누군가가 필요하다. ex) 신, / 한국경제

기타.java

class 애니메이션 {
	String 구동방식;
	애니메이션() {
		구동방식 = "스트리밍";
	}
	애니메이션(String 구동방식) {
		this.구동방식 = 구동방식;
	}
	void 재미있게하다() {
		System.out.println("재미있게 한다.");
	}
}

class 배급사 {
	int 주가;
	애니메이션 구동방식1, 구동방식2;
	배급사() {
		주가 = 124;
	}
	void 만든다() {
		구동방식1 = new 애니메이션();
		구동방식2 = new 애니메이션("블루레이");
		System.out.println("컨텐츠를 만들었다");
	}
}

class 소비자 {
	int= 30000;
	String 이름 = "김민겸";

	애니메이션 구매한다(애니메이션 구동방식) {=- 3000;

		return 구동방식;
	}
}

한국경제.java

class 한국경제 {
	public static void main(String[] args) 
	{
		배급사 디즈니 = new 배급사();
		System.out.print("주가가 " + 디즈니.주가 + "달러인 월트디즈니가 ");
		디즈니.만든다();
		System.out.print("첫번째 애니메이션의 구동방식은 " + 디즈니.구동방식1.구동방식 + "이고, ");
		System.out.print("두번째 애니메이션의 구동방식은 " + 디즈니.구동방식2.구동방식 + "이다.");
		System.out.println();

		소비자 소비 = new 소비자();
		애니메이션 구동방식 = 소비.구매한다(디즈니.구동방식1);
		System.out.println(
			소비.이름+"가 뮬란(구동방식:"+구동방식.구동방식+")을 구매하고, "+소비.+"원이 남았다.");
		System.out.print("뮬란은 "+소비.이름+"를 ");
		구동방식.재미있게하다();
	}
}

자바에 관한 여러가지 이야기

class A { // class body or block = {}
    public static void main(String args[]){ // 인입점(시작점)이 있는 클래스 요건, method body or block = {}
		System.out.println("A의 main() 호출");
    }
}
  1. 상단과 같은 코드가 있을 때 {} 하나가 body 혹은 block이라고 함
  2. 자바 클래스 안에는 3가지가 나올 수 있음
    • 생성자 : 반드시 존재해야 하는 주어가 객체
    • 속성 : 객체의 속성
    • 메쏘드 : 객체가 무언가 하는 일
      ex) 귀여운 해린이가 간다. 라는 문장에서 귀여운=속성, 해린이가=생성자, 간다=메쏘드
  3. package 선언은 최상단, import 구문은 package 선언 하단인, 상단부에 위치해야 함

클래스의 구조를 나타내는 소스

class A {
	String shape; // 속성(멤버변수)1 선언
	String name; // 속성(멤버변수)2 선언

	A() {
		// 생성자 선언
		// 이름을 안넣어주는 애는 얘가 호출됨
		shape = "귀여운"; // 초기화
		name = "영희"; // 초기화
	}
	A(String name, String shape) { // 파라미터 지역변수 (소괄호 안에 넘어오는 변수)
		// 생성자 선언
		// 이름을 넣어주는 애는 얘가 호출됨
		this.name = name;
		this.shape = shape;
	}
	void go() { // 메소드 선언
		System.out.print("간다");
	}
	public static void main(String args[]) { // 파라미터 지역변수 (소괄호 안에 넘어오는 변수)
		A a1 = new A(); // 생성자 호출
		A a2 = new A("철수", "성격좋은"); // 생성자 호출
		System.out.print(a2.shape + " " + a2.name + "(이)가 "); // 속성(멤버변수) 호출
		a1.go(); // 메소드 호출
	}
}

코딩 시, 학습 시 꿀팁

  1. 직관적인 단어로 코딩하라!
  2. 이해가 안돼도 반복코딩을 해라! 적어도 5번 이상 해야함! 그게 제일 좋다! 코딩은 자전거 타는거나 수영하는 거랑 똑같다! 백날 이해하려고 해도 해보지 않으면 아무 소용없다, 그러나, 왜? 라는 질문을 많이 하는 건 좋은 습관이다!
  3. 백견이 불여일타 (백 번 보는 것보다 한 번 해보는 것이 낫다)
  4. 모르는 게 있을 경우 그 자리에서 공개 질문 하거나, 그러지 못할 경우엔 그 질문은 뛰어넘고 그 다음에 집중할 것! 일단 모르는 것이 있으면 체크해두고 친구들이나, 그 질문거리를 가지고 있다가 다음에 기회가 될 때 물어볼 것!
profile
휘발방지

0개의 댓글