innn

2022.06.29 본문

카테고리 없음

2022.06.29

33삼 2022. 6. 29. 12:58

실행결과는 ABC TXT파일에 저장해둔 값이 뜬다.

한글로 돼있어서 -19 -103 -115로 찍히게됨.

write 할 때 제일 조심해야할 건 flush() 를 꼭 해줘야 하는 것

0123 4는 다섯 번 돌았다는 것임.

다섯번 돌면서 write를 test.txt에 한 것임. 

write에서 잊지 말야할 건 문자가 2바이트 라는 것

 

버퍼라는 건 임시적인 메모리 

캐릭터 어레이로 얘기 안하고 캐릭터 버퍼라고함 (현업에선)

버퍼라는 건 n개의 데이터를 집어넣는 거니까 당연히 어레이겠죠?

버퍼라는 단어를 더 많이 씀. 그래서

 

2byte가 한 문자니까 2byte를 읽음
중요한건 뭐다 ? 2byte씩 들어가는 게 핵심 포인트다.

 

유닉스나 리눅스에선 코솔이라 하지 않고 terminal 윈도우즈에선 프롬프트 이클립스에선 콘솔 뷰라고 함.

전체 내용을 바이트 배열로 받아 String 객체 생성 후 읽기

백엔드 엔지니어는 웹 화면에서 유저의 데이터를 받기때문에 키보드로 받을 일은 없다.

sysout은 연습하려고 하는 거지 쓰느 게 아님.

나중에 배우는 로거를 씀. 

그거 쓰고 데이터 갖고온 거 화면에 html로 뿌려줌

시스템 콘솔을 쓸일은 1도 없다

이런건 어디서? 공장 자동화 쪽에 제조업 쪽에 쓴다. 

 

여기서 말하는 속성은 read할 수 있는지 write할 수 있는지임.

File file = new file(~~)

이건 객체를 생성해도 파일이나 폴더가 생성되는 것은 아니다.

이 파일이나 폴더를 사용할 준비를 한 것이다.

mkdir = make directory 라는 뜻

파일에 저장되어 있는 데이터를 읽기 원할때, 구현할 프로그램과 참조할 데이터 파일 사이에 데이터가 이동할 수 있는 다리를 놓는게 스트림
바이트 단위로 읽는 다는 것은 모든 것을 컨트롤 할 수 있다는 뜻 컴퓨터가 바이트 단위로 읽기 실행하기 때문에
얘는 기존 파일 끝에 내용 추가하고 싶으면 true라고 주면 덮어쓰지 않고 append한다는 의미

통상적으로 append 할 일은 되게 많아도 덮어쓰기 할 일은 별로 없음

 

존재하지 않으면 문제가 생길 수 있으니 try catch문으로 만들어라

 

 

소켓 프로그래밍 = 네트워크 프로그래밍, 그럼 네트워크 프로그래밍이란?

내 pc와 다른 pc와 연결해서 다른 컴퓨터로 보내주는 프로그래밍

 

역할을 클래스로 만들면 문제가 발생하는 예를 보여줌
역할 가지고 클래스를 설계하면 안된다.

역할을 가지고 설정할 경우 루프가 생길 수 있으므로 제약을 걸어줘야 한다. 

일반화 관계는 is a kind of 관계라고 한다.

부모 클래스라는 말을 쓰기도 하고 원서에는 수퍼 클래스라고 함.

수퍼 클래스가 있고 밑에 서브 클래스가 있음.

추상클래스 오버라이드 까먹지 말자!!!

aggergation 전체를 나타내는 객체와 부분을 나타내는 객체와 전체(컴퓨터) 부분(모니터) 

얘네들 간의 라이프 타임(살아있는 시간)이 독립적이냐 아니냐에 따라서 aggregation이냐 composition이냐가 달려있음. 

 

아무때나 뉴 하면 안된다. 

독립적일때 해야할 건지, 종속적일 때 할건지 생각하고 뉴 해야함.

라이프 타임이 종속적이면 당연히 부분 객체가 사라져야함.

종속적인건 바꿔치기 할 수 없음을 기억

집약관계와 합성관계를 구분하려면 life time 의존성을 살펴봐야함.

 

 

 

얘는 여기서 생성된게 아니라 어딘가에서 Mainboard mb가 생성된 것을 넘겨준거...

컴퓨터 = 전체를 나타내는 객체

부분은 mainboard, cpu, memory, powersupply

 

이게 왜 종속적?

컴퓨터가 생성이 되야만 하니까 종속적인 거임. 

 

2,4여야 2 또는 4인 것임

연관관계는 오래 사용

의존관계는 일시적 사용

 

한 클래스에서 다른 클래스를 사용하는데 클래스의 속성에서 참조로 사용하는 경우, 연산의 인자로 참조하는 경우, 메소드의 지역 개체로 참조하는 경우

 

사람과 자동차의 관계는 연관관계 

그래서 person이 car를 사용 = 오래 사용 

- own 가 되어있으니 private 

 

연관관계

 

찰나적인 관계, gasPump P 어마운트 콜해도 필가스가 중괄호 닫히는 그 시점까지만 쓰임.

 

연관관계 = 오랜시간 같이 사용하는 관계

의존관계 = 짧은시간 동안 의존하는 관계

 

메소드로 펑션으로 처리할 수 있는 것이 머리속에 잡히게 되면 클래스 설계를 잘함

메소드를 잘 못쓰면 파라메타, 리턴 쪽은 안됨.

메소드를 못하는게 문제임

 

프로그램 짜세요 하면 메소드 부분에 포커싱을 맞춰라 ..

 

인터페이스 = 책임이다. responsibility 그 객체가 해야하는 일 할 수 있는 일을 책임이라고 함

 

can do this, must로 해석되는 거

가령 리모콘의 책임은 가전기기를 키거나 끄거나......

요런 생각을 자꾸 해버릇 ㅎㅐ야함.

 

밑에서 위로 올린다는 느낌을 자꾸 가져야함

얘네들 위에서 일반화로 풀건지 인터페이스로 풀건지 고민을 해야함......

 

 

주문 엔트리까지 다 지워지려면 종속관계여야한다. 

지불을 신카 현금 체카 다 클래스로 따로 둘 생각이 중요함

 

 

 

인터페이스 얘기할때는 <<>> 꺾쇄 두개쓰는 걸 인터페이스다 (클래스 다이어그램에서는)

 

이런 개체가 소유한 특성의 이름으로 하나의 집합이 이뤄지는 게 추상화 클래스.

추상화 한다는 것은 여러 개체 

엔터티 entity라는 건 하나의 개념 

하나하나하나나를 개체라고 함. 

엔터티라는 말은 또 데이터베이스에서 씀

 ERD Entity Relationship Diagram

추상화 한다는 말을 다시 생각해보면 

우리가 구현하고자 하는 어떤 영역에서 속성들 메소드 필드 어떻게 추출해낼 것이냐 그거임.

그런 것이 n개가 있는 친구들을 모으는 것.

선생님은 switch 안좋아함.

 

추상화 한다는것은 메소드를 바꿀 수 있어야하는거임.

Car c를 아우디 벤츠 등 어떤 자동차로 초기화하냐에 따라서

달라기기 때문에 코드 변경할 일이 없는것.

 

다른 자동차가 추가되도 그냥 그 객체를 Car c로 집어넣으면 되니까 엔진오일 교체라는 행위를 묶어서 하나로 메소드로 만든 것이다. 

changOil(car c) 와 changOil() 은 매개변수가 다르기 때문에 다른 메소드다. 

changOil()이 매개변수가 없는거라 오버로딩되서 둘이 다른 메소드임.

 

   void engineoilChange(Car car) {
      //엔진오일을 교환하는 과정을 기술
   }