Today
오늘도 객체지향 프로그래밍 강의로 오전공부를 시작했따,!
그리고 드디어 타임어택 문제 푼 것 정리를 하고..자바로도 해야되는데 아직 자바 실력이..!
자바 문법 복습을 하고.
(객체지향까지 진도를 나갔어야했는데...실패)
저녁에 CS특강까지 들었다.
실강은 들어도 이해가 잘 되지 않는다..
강의자료로 쓰신 노션을 다시 한 번 글자 하나하나 곱씹어야겠다
큰 틀을 이해하는 데 일단 목표를...!!
더 좋은 소프트웨어를 만들기 위해!!
그래도 일단 이해한 데까지 정리를 해본다
객체지향 프로그래밍
객체 (Object)
: 다양한 속성들의 집합
객체의인화
- 현실에서는 객체가 수동적이지만, 소프트웨어에서는 능동적이다
- 커피양은 스스로 줄지 않지만 소프트웨어에서는 스스로 줄어버린늑 ㅓㅅ..
- 소프트웨어 세계에서는 객체가 더 많은 일들을 스스로 할 수 있어야 함@!!
상상한 것을 만들 수 있는데
현실세계와 간극이 있을 수 있다..
객체지향 설계의 핵심
객체들에게 역할과 책임이 주어지고
서로 메세지를 전달하며
협력하여 목표를 달성해나가는 것@!
객체지향
- 객체를 지향하는 것. not 클래스
- 클래스는 객체들의 협력 관계를 코드로 옮기는 도구일 뿐
- 객체의 역할, 책임, 협력에 집중 해야함 (== 행위에 집중!)
이모저모
-
객체한테도 책임과 역할이 과하게 부여하게 되면 객체가 과중되어
클래스가 빵 터져버리는 수가 있다..
그러면 유지보수도 힘들어짐
-
객체는 세분화 하면 좋음
-
역할과 책임이 명확해지니까..
-
세분화를 위해서는 네이밍이 중요하다! 영단어 공부해야겠따..
-
생성자는 초기화에 final
을 붙여서 상수로 만들어 주는게 좋음
- 최초에는 변경이 적은게 좋기 때문에..
- 일단 묶어두고 나중에 필요할 때 풀어주는게 좋음
-
코드 짤 때 set
은 사용하지 않는게 좋음
만드는 사람이 어떻게 만드느냐에 따라서 달라지기 때문에 그림을 잘 그려야된닷
CS특강_ 프로세스, 스레드, 비동기
운영체제( OS)에 여러개의 프로세스가 있고
각 프로세스는 1개 이상의 스레드를 갖는다
프로세스
- 운영체제에서 독립된 메모리를 할당받은 작업의 단위. 프로그램의 인스턴스이다.
- 프로세스가 메모리를 관리하기 위한 공간을 주소공간이라고 한다
- 주소 공간은 Code, Data, Stack, Heap으로 구성
- 각 프로세스는 최소 1개의 스레드를 갖는다
스레드
- Stack 영역을 할당받음
- 다른 스레드와 해당 프로세스 내의 Code, Data, Heap 영역을 공유
멀티프로세스
: 하나의 프로그램을 여러 개의 프로세스로 구성해 각 프로세스가 하나의 작업을 처리하도록 하는 것
- 단점
- 문맥교환(Context Switching )과정에서 무거운 작업이 진행되고 많은 시간이 소모될 수 있음.
- 문맥교환: 하나를 하다가 다른 일을 하라고 하면 전환하는 과정에서 비용 발생
멀티스레드
: 하나의 프로그램을 여러 개의 스래드로 구성해 각 스래드가 하나의 작업을 처리하도록 하는 것
- 프로세스에 비해 메모리 공간과 시스템 자원 소모가 줄어들게 된다
- 요청이 몰렸을 때 값이 원하던게 안나올 수 있음 그렇게 됨,,
블로킹 vs 논블로킹
- 블로킹
- 제어권을 넘겨줌. 다른 함수를 호출하면 그 함수의 작업이 완료되야 원래 함수도 진행됨
- 논블로킹
- 제어권을 넘겨주지 않지. 호출하고 그 함수 작업여부와는 관계 없이 원래 함수 진행
동기 vs 비동기
- 동기
- 신경써. 함수 A와 함수 B를 호출할 때, 함수 A가 함수 B의 리턴값을 계속 확인
- 비동기
- 신경안써. 함수 A와 함수 B를 호출할 때, 함수 A가 함수 B의 작업 완료 여부는 신경 쓰지 않는 것
이 내용도 전부 이해는 못했지만, 큰 그림을 보자.. 들어본거에 일단 만족..
마무리
어제 해야할 것
✔ 알고리즘 타임어택 정리
✔ 자료형변수와 참조형 변수 차이 알아보기
모두 완료~!
주말엔 자바 객체지향
에 대해 공부하고 이해를 해보자
예외처리
까지 할 수 있으면 참 좋을텐데..
슬랙에 튜터님이 남겨주신 자바 숙제도 풀 수 있으면..!!!
주말에 할 게 많구나~~!
오히려 좋아╰(°▽°)╯