본문 바로가기

Java

Day2. 강의 노트(다양한 주제..)

클래스 정보가 메모리에 올라간다.


레퍼런스 타입 생성자

---                ----

Ball b1 = new Ball();

      ---

 레퍼런스 변수 => 리모컨

인스턴스를 생성하려면 반드시 레퍼런스 변수가 있어야함


new : 인스턴스 생성을 위한 연산자


new Ball() -> Ball 인스턴스(객체)를 메모리에 생성한다.


객체는 관련된 것을 잘 모아서 가지고 있는것

추상화 - 중요한 것은 높이고 불필요한것은 줄이는것

객체는 응집도가 높아야한다!

- 관련된 것들을 잘 모아서 가지고 있어야한다.

객체는 추상화가 잘되야한다!

- 중요한 것은 높이고 불필요한 것은 없애야 한다.

객체지향은 재사용성이 높다.


기본형 타입 - java에서 객체가 아닌 애들, 값을 가진다. 참조 x

boolean, short, int, long, float, double

어떻게 저장되는지 알아내라



자료의 최소 단위 : 1byte. bit에 저장하는 방법은 없다.


int value; 를 아래와 같이 수정한다.

접근제어자 : 신호등을 세우는 것, 필드는 직접 접근하지 않는다.


private int value; 외부에서는 직접 변수에 접근할 수 없다.

메소드를 통해서만 가능 


상속 ?

일반화 시킨다 - 걸으면 동물 뭐 이런거?

부모클래스 : 일반화 시킨 특성을 모아놓은 클래스?

음식, 동물, 자동차

실체가 없는, 일반화 시키기 위해 만들어진 단어들 :

--> 부모 클래스이면서 추상클래스

추상클래스는 인스턴스가 될 수 없다.


인터페이스(interface) ?

- 기능을 정의한다.

- 소프트웨어를 만든다면 당연히 기능부터 정의한다.

- 기능의 정의가 구현보다 먼저 있다.(당연히)


인터페이스를 먼저 만드는 것 보다는 이미 만들어진 것을 사용해보자.


개발자라면 꼭 알아야할 자료구조! 컬랙션 프레임워크.


컬렉션 프레임 워크에서 제공하는 인터페이스에 대해 알아보자.

api : 설명서 보고 더 공부



1.Collection

- 여기에 자료가 있다를 표현한다.

- 중복을 허용, 순서는 기억못한다. 

- 물건을 막 집어넣고 몇 번째 꺼 꺼내라 하면 못 꺼냄

- add(E) : 추가 기능

- int size() : 몇 건 들어가 있지?


2.Iterator - 자료구조에서 값을 꺼낼때 사용

- boolean hasNext() - 꺼낼것이 있느냐 없느냐?

- E next() - 꺼내다.


3.Set - 중복을 허용하지 않는다. 순서는 기억 못한다.

- boolean add(E) - 추가 


4.List - 순서를 기억한다.

- E get(index) - 특정 위치의 값을 꺼낸다.


5.Map - 값을 key, value 형태로 관리한다.

- put(key, value) - 값을 저장한다.

- value get(key) - key에 해당하는 value를 구현



SDLC(Software Develpment Life Cycle)

- 소프트웨어 개발 환경 주기, 어떻게 하면 함께 개발을 잘 할 수 있을까

- 어떤 기능이 필요할까를 고민


페이퍼 프로토타이핑? 

- 제품이나 서비스를 효과적으로 전달하기 위해 종이에 간단하게 그림이나 글씨로 제품을 상상하여 표현하는 것


소프트웨어 개발 = 요구사항을 구현, 코딩은 그 과정의 일부일


Ex 01) Exam01 클래스와 Ball 클래스를 각각 작성하고, Exam01 클래스(메인)에서 b1, b2 객체를 생성해 비교문을 통해 각각 객체가 같은지 알아보자


public class Exam01 {
public static void main(String[] args) {
Ball b1 = new Ball();
Ball b2 = b1;// 리모컨이 두개 생김
if (b1 == b2) {
System.out.println("b1과 b2는 같은 객체를 참조합니다.");
} else {
System.out.println("b1과 b2는 다른 객체를 참조합니다.");
}
}
}


public class Ball {

}


Ex 02) Cal 클래스(더하기, 빼기, 초기화, 출력 메소드)와 Exam02 클래스를 만들고 1 ~ 100까지의 합을 구해라.

Cal : 계산을 위한 객체

   value - 내부적으로 가지는 정수 값

더하다(정수) - 특정 정수 값을 받아서  value에 더한다.

빼다(정수) - 특정 정수 값을 받아서 value에 뺀다.

초기화() - value값을 0으로 바꾼다.

출력() - value값을 출력


public class Cal {

// 클래스는 필드와 매소드를 가질 수 있다.
// 필드는 클래스가 가지는 것이고, 메소드는 기능을 말한다.
/*
* 메소드에 선언된 변수는 지역변수(local variable))라고 한다.
메소드에서 필드를 상요할 때는 this.변수명 라고 사용한다
* 메소드에서 선언된 지역변수 이름이
*
* 메소드는 다음과 같이 생겼다.
접근제어자 리턴타입 메소드이름(파라미터타입 파라미터변수 ....){ 메소드 내용 } 접근제어자 :
* public, protected, default, private ex>
* public void plus(int value){
*
* }
*
*/
private int value; // field - 갖는 값. 정수를 저장할 수 있는 필드를 선언했다.
// 숫자에 해당하는 기본형 타입은 필드 선언시 모두 0값을 가진다.

public void plus(int value) {
this.value = this.value + value;
}

public void minus(int value) {
this.value = this.value - value;
}

public void clear() {
this.value = 0;
}

public void print() {
System.out.println(this.value);
}
}


public class Exam02 {
public static void main(String[] args) {
Cal c1 = new Cal();
Cal c2 = new Cal();
c1.clear();
for (int i = 1; i <= 100; i++) {
c1.plus(i);
c1.print();
}
}
}


'Java' 카테고리의 다른 글

Day 3. Maven 이란?  (0) 2018.12.06
Day 3. Maven 프로젝트 생성 및 Java 8 설정  (0) 2018.12.06
windows10에 JDK설치하기  (0) 2018.12.06
Day1. java 개발 환경 설정(window)  (0) 2018.12.04
Day 1. Java 프로그래밍이란?  (0) 2018.12.03