본문 바로가기

국비 2019.03.11/3월

03.14 수업정리

- 진법 변환)

-> 순서: 8진수 - 2진수 - 16진수 순서로 변경한다

ex) 371(8) 

1. 10진수로 변경: 3*8^2 + 7*8^1 + 1*1 = 249(10)

2. 2진수로 변경: 3/7/1 -> 011/111/001 ->11111001(2)    (2^3 =8 이기 때문에 3개씩 끊어쓴다)

3. 16진수로 변경: 1111/1001 ->F9(16)


- 출력 스트림 객체와 API)

1. I/O 장치를 위한 인터페이스 필요성: 

->  CPU/메모리 장치에 상호작용이 안된다. 

-> PRINT 기능이 기계별로 언어마다 너무많기 때문에 장치가 달라져도 코드가 수정되지않게 해야한다. 

-> 입출력장치(기계)와 입력, 계산, 출력의(프린트기능) 직접적인 연결을 차단하고

 인터페이스가 간접적으로 접근하여 상호작용 역할을 수행하도록한다(직접적으로 접근하면 인터페이스의 의미를 잃은 것과 같다)


-> 함수: 반복되는 부분을 간략화시킨 코드이다(코드의 간결성). 

    코드 수정시 함수내에서 한번만 수정하면되서 편리하다(코드의 집중화)

    함수 사용 부분에서는 함수의 정의 부분을 인터페이스 구현 부분에서 몰라도된다(ex. 입출력장치의 기능을 함수로 정의를 한다음(print란 이      름의 함수로 정의) 그 함수를 입력, 출력, 계산부분에서 사용한다.

    사용하는 입출력장치가 바뀌면 함수부분의 코드를 변경시키면된다 - 함수로서 인터페이스의 역할을 한다)

    함수는 코드를 자를 수 있다(코트 파편화)

    함수는 코드를 숨길 수 있다(코드 은닉화)


- 입출력장치와 언어 사이의 차단 역할은 운영체제가 한다.(운영체제가 인터페이스를 정의해놓는다) 

  각 입출력 장치의 드라이버가 존재해야 다른 이름마다 사용가능. 


- 인터페이스(어플리케이션을 만들 때 사용되는 함수지만 역할이 인터페이스이기 때문에 인터페이스로 부른다) :

  운영체제 API를 정해놓고 사용하면 운영체제에 종속되어 버리기 때문에 운영체제가 정하지 않은 인터페이스를 사용한다. ex) 자바 API


- 플랫폼: 언어가 아닌부분 

ex) (고급언어)자바 플랫폼 api(함수형식)/입출력 api - write(), print(), println().. etc

     저급언어에서의 플랫폼은 입출력장치들(기계)


-system.out.println : system(개체명), out(객체), println(객체안에 포함된 입출력 API)

 

- 매개값이 없는 함수는 함수가 아니다(?) -> 미지수가 없어서 나오는 결과값이 항상 같기 때문이다(미지수로 다른 결과가 도출될 수 있도록 해야한다)


- stream(방향성을 갖고있는 버퍼) : 함수사용의 동시성을 막기위해 사용하는 것(일종의 잠금장치). 

  효율성: 출력할 것을 모니터에 바로 출력하는 것이 아닌 미리 버퍼에 저장해놓아 동시성문제를 해결하고 효율성도 생긴다

  -> 실행환경에서는 출력버퍼를 이용한다. 자바에서는 출력 스트림 버퍼라고 말한다(출력 스트림) 


- printf는 출력 스트림인 OUT에 쓴다. OUT의 능력으로써 출력이 가능하다(객체는 함수를 쓰기위한 조건으로 개체를 사용한다)


- 콘솔 입출력과 문자코드)

 입력시 키보드의 라벨번호가 아닌 회사마다 정의한 키의 식별번호가 들어간다. 

 -> 식별번호를 라벨번호로 인식하는 문제. (키 식별을 넘어서 문자를 해석하는 코드체계가 필여하다 - 아스키코드)

 -> UTF-8 & ANSI: 

 -> UNICODE 


- System.out.write(65) : 문자 출력하라는 뜻이 아니기 때문. 버퍼안에 8키로바이트가 다 차야지 실행된다.

  강제 실행을 하고 싶다면 System.out.flush()를 사용하면된다( A 출력 )

-> System.out.write('H') 라고 하면 H 문자가'' 그대로 출력된다. 

-> System.out.write('h'+1); 이라고 한다면 문자 h의 다음 문자인 i가 출력된다

->char a = 'h';   System.out.write(a); 이라한다면 문자 h가 출력된다.

-> 숫자 3과 문자'3'은 다르다. 


 - write는 문자를 하나씩 출력하기 때문에 문자열을 출력하려면 print를 사용해야한다.(문자열단위로 출력한다) 

-> print()

-> printf()

-> println()


- System.out(객체) =  new OutputStream()(개체명)

-> new로 생성된 순간 인스턴스가 된다(=식별자를 붙여주는 순간 객체 =object가 된다, 실존하는 것 - 객체의 이름을 사용한다.)

ex) 말티즈는 개체명 쇠돌이(식별자)는 객체명  

-> new는 개체에게 객체를 만들어달라고 요청하는 것과같고 생성되는 객체에 식별자를 붙여주면 인스턴스(오브젝트)가 된다.

-> 참조변수는 주소를 기억하지 않기때문에 포인터와는 다른 개념으로 봐야한다. 

-> 가장 기본적인 입출력 장치인 out과 in객체는 직접생성할 필요가 없도록 자바에서 설정해놓음


이 블로그의 설명에 따르면 객체(Object)는 소프트웨어 세계에 구현할 대상이고이를 구현하기 위한 설계도가 클래스(Class)이며이 설계도에 따라 소프트웨어 세계에 구현된 실체가 인스턴스(Instance)이다. 

객체(Object)는 현실의 대상(Object)과 비슷하여상태나 행동 등을 가지지만소프트웨어 관점에서는 그저 콘셉에 불과하다소프트웨어에서 객체를 구현하기 위해서는 콘셉 이상으로 많은 것들을 사고하여 구현해야 하므로이를 위한 설계도로 클래스를 작성한다설계도를 바탕으로 객체를 소프트웨어에 실체화 하면 그것이 인스턴스(Instance)가 되고이 과정을 인스턴스화(instantiation)라고 한다실체화된 인스턴스는 메모리에 할당된다. 

코딩을 할 때클래스 생성에 따라 메모리에 할당된 객체인 인스턴스를 객체라고 부르는데틀린 말이 아니다.

<출처: https://cerulean85.tistory.com/149 [카르페디엠!]>



'국비 2019.03.11 > 3월' 카테고리의 다른 글

03.15 수업정리  (0) 2019.03.15
03.14 과제  (0) 2019.03.14
03.13 과제 정리  (0) 2019.03.13
03.13  (0) 2019.03.13
03.12 자바 프로그래밍  (0) 2019.03.12