https://gray-behavior-aa7.notion.site/8045c16ceddc4129b2a534ab627e9f6a

 

운영체제 강의 공부 정리 | Notion

kocw 반효경 교수님 - 운영체제 강의 공부 정리

gray-behavior-aa7.notion.site

'CS 공부 > 컴공 기초' 카테고리의 다른 글

객체지향 vs 절차지향 프로그래밍  (0) 2021.01.22
코틀린(Kotlin)  (0) 2021.01.22
프레임워크(Framework)  (0) 2021.01.22
  • 옛날에는 하드웨어와 소프트웨어의 개발 속도차가 크지 않았지만 지금은 소프트웨어의 속도를 하드웨어가 따라오지 못하는 상황이 발생한다. 그 배경 속에서 객체지향 언어가 나타났다.

 

 

절차지향? (Procedure Programming)

  • 순차적으로 실행하는 구조.
  • 실행 순서가 정해져 있어 코드의 순서가 바뀌면 동일한 결과를 보장하기 힘듬
  • 유지보수가 어려움
  • 컴퓨터의 처리속도와 유사해 실행속도가 빠르다

객체지향? (Object Oriented Programming)

 프로그래밍에서 사용하는 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법.

키워드 5가지

  • 클래스와 인스턴스

클래스: 문제를 해결하기 위한 데이터를 만들기 위해 추상화를 거쳐,

같은 종류의 집단에 속하는 속성(attribute)와 행위(behavior)를 변수와 메서드로 정의한 것

인스턴스: 클래스의 객체. 클래스에서 정의한 것을 토대로 실제 메모리상에 할당된 것, 실제 프로그램에서 사용되는 데이터

 

  • 추상화

불필요한 정보는 숨기고 중요한 정보만을 표현함으로써 공통의 속성이나 기능을 묶어서 이름을 붙이는 것.

주의할 점은 속성 위주가 아닌 기능 위주로 정의하는 작업을 하는 것이다.

 

  • 캡슐화

객체의 데이터를 외부에서 직접 접근하지 못하게 막고, 함수를 통해서만 조작이 가능하게 하는 작업

목적은 코드를 재수정 없이 재활용하는 것.

기능과 특성의 모음을 '클래스'라는 '캡슐'에 분류해서 넣는 것이 캡슐화이다. 그래서 객체가 맡은 역할을 수행하기 위한 하나의 목적을 한데 묶는다.

 

  • 상속

절차지향에서는 라이브러리를 통해서 남의 코드를 가져와 사용할 수 있었다. 하지만 이는 버전에 맞지 않을 수 있고 불필요한 코드 수정이 필요할 수 있다. 그래서 '상속'을 도입. 상속은 부모클래스의 속성과 기능을 그대로 이어받아 사용할 수 있게 하고, 기능의 일부분을 변경해야 할 경우 상속받은 자식 클래스에서 해당 기능만 다시 수정하여 사용할 수 있게 하는 것이다.

 

  • 다형성

하나의 변수명, 함수명 등이 상황에 따라 다른의미로 해석될 수 있는 것.

오버라이딩: 부모클래스의 메서드와 같은 이름, 매개변수를 재정의하는 것.

-> 같은 함수를 올라타서 덮어 씌우고 새롭게 정의하다(riding)

 

오버로딩: 같은 이름의 함수를 여러개 정의하고 매개변수의 타입과 개수를 다르게 하여 매개변수에 따라 다르게 호출할 수 있게 하는 것. 

-> 전혀 다른 함수를 불러오다(loading)

 

 

장점?

  • 코드 재사용이 용이- 클래스를 가져와서 사용가능, 상속을 통해
  • 유지보수가 쉬움 - 클래스 내부의 멤버변수 혹은 메서드의 해당 부분만 수정하면 됨
  • 대형 프로젝트에 적합 - 클래스 단위로 모듈화시켜서 개발, 여러명이 개발할 때 업무 분담이 쉽다.

 

단점?

  • 객체가 많으면 용량이 커질 수 있음
  • 설계 시 많은 시간과 노력이 필요
  • 처리속도가 상대적으로 느림 ..?

 

 

*메소드: 객체가 수행해야 할 구체적인 연산. 객체의 속성을 조작하는 데 사용됨. 메시지에서 처리됨.

*메시지: 절차지향에서 명령어의 의미. 객체의 특정한 동작을 수행하는 명령어. 객체 간 서로 통신하는 방법.

'CS 공부 > 컴공 기초' 카테고리의 다른 글

[운영체제] kocw 반효경 교수님 강의 정리  (0) 2024.05.19
코틀린(Kotlin)  (0) 2021.01.22
프레임워크(Framework)  (0) 2021.01.22

 

기존에는 주로 자바를 앱 개발 언어로 사용했지만 2017년 5월 Google I/O 에서 코틀린(Kotlin)을 공식 언어로 채택한 후 코틀린으로 앱을 개발하는 기업이 차츰 늘어나고 있습니다. 자바를 완전히 대체할 수 있는 언어가 되는 것이 코틀린의 주목적이다. 

 

  • 코틀린은 젯브레인 사가 만든 프로그래밍 언어입니다.
  • 코틀린은 자바6와 완벽히 호환됩니다. 이는 분명 장점이지만, 여전히 안드로이드는 자바와 코틀린을 동시에 지원하므로 자바의 형식에 맞춰서 코틀린으로도 개발해야 합니다. 
  • 기본적으로 자바가상기계(Java Virtual Machine, JVM)에서 매끄럽게 동작하는 코드를 만들 수 있게 해줍니다.

* 자바가상기계(JVM): 자바 바이트 코드와 컴퓨터의 운영 시스템 간에 번역기 역할을 하여 자바로 작성된 응용 프로그램을 윈도우나 매킨토시, 유닉스 등에서 사용할 수 있도록 해주는 소프트웨어.

 

  • 코틀린은 정적 타입 지정 언어다. 자바와의 차이점은 코틀린에서 변수 선언 시 모든 변수의 타입을 명시할 필요가 없다는 것이다. 다른말로 컴파일러가 문맥으로 타입을 자동으로 확정하고 검증해 주는겁니다.
val number = 10 // -> == val number:Int = 10


출처: https://tourspace.tistory.com/61 [투덜이의 리얼 블로그]

 

 

 

※ 자바 vs 코틀린

자바: 객체지향형 프로그래밍

코틀린: 객체지향형 + 함수형 프로그래밍
++Java SE 8 버전부터는 람다 표현식을 사용하여 자바에서도 함수형 프로그래밍을 할 수 있게 되었습니다.

 

함수형 언어에서는 함수(Function) 자체가 일급 객체가 되겠지만,

객체지향 언어에서는 클래스(또는 객체, Object)가 일급 객체가 됩니다.

 

절차지향 프로그래밍의 단점을 극복하기 위해서 객체지향 프로그래밍이 등장했다면,

함수형 프로그래밍은 객체지향 프로그래밍의 단점을 극복하기 위해서 등장했습니다.

 

IT 용어 어려울 것 하나 없다

 

IT 용어는 쉬운 개념하나만 잡아가면 고구마 줄기 엮이듯이 다른 개념을 쉽게 잡을 수 있습니다. 클라우드? API? 이런 용어들 조금만 파고들어가면 별 거 없습니다. 다만 익숙하지 않을 뿐이죠! 개념 전체를 100% 아우르는 식으로 알아갈 경우에는 오히려 더 헷갈리기만 할 뿐입니다. 실무에서 쓰이는 개념의 의미를 핵심 포인트, 엑기스만 이해한다고 생각하면 어려울 것 도 없습니다. 

출처: https://engkimbs.tistory.com/612?category=763578 [새로비]

 

앞으로 외계어같은 전공지식을 공부하면서 한 줄기 빛 같은 말씀이여서 복사해왔다...ㅠㅠ

 

 


 

프레임워크의 사전적 정의

A basic structure underlying a system, concept, or text.
  • 애플리케이션 프레임워크 : 프로그래밍에서 특정 운영체제를 위한 응용 프로그램 표준 구조를 구현하는 클래스와 라이브러리의 모임.
  • 목적에 따라 효율적으로 구조를 짜놓은 개발 방식.

Java 개발자 => Struts, Spring

Python 개발자 => Django

JavaScript => Angularjs

PHP => Laravel

*PHP( HyperText Preprocessor ): C언어를 기반으로 만들어진 서버 측에서 실행되는 서버 사이드 스크립트 언어, PHP로 작성된 코드를 HTML 코드 안에 추가하면, 웹 서버는 해당 코드를 해석하여 자동으로 HTML 문서를 생성합니다.

따라서 PHP를 사용하면 동적으로 빠르게 HTML 문서를 만들 수 있습니다.

 

  • 스트럿츠 프레임워크

자바 기반의 JSP만을 위한 프레임워크.

디자이너의 프론트엔드 영역과 개발자의 백엔드 영역으로 분리해서 개발을 하자는 목적으로 만들어진 기술이 MVC model2이다. 

이러한 MVC(Model, View, Controller) 기반으로 나온 프레임워크.

*JSP( Java Server Page ): HTML, XML을 기반으로 한 페이지에 자바를 삽입해 동적인 웹페이지를 만들어 주는 기술

 

  • 스프링 프레임워크

엔터프라이즈급 애플리케이션 개발에 필요로하는 경량형 프레임워크.

J2EE에서 제공하는 대부분의 기능을 지원.

DB처리를 위해 널리 사용되는 라이브러리와 연동을 지원.

 

  • 앵귤러 프레임워크

자바스크립트 기반의 프레임워크

기본적으로 MVC (Model-View-Controller) 모델 지원과 같은 다른 웹 어플리케이션 프레임워크에서도 지원하는 기능을 제공

자바스크립트 또는 제이쿼리로 만든 코드의 길이를 더욱 단순화 

프로젝트 유지보수) 비용을 최소화

HTML, CSS개발자와 자바스크립트 개발자를 명확하게 분리해 준다.

 

  • 장고 프레임워크

MVC 패턴 기반 MTV (기본적으로 Model-View-Controller 를 기반으로 한 프레임워크)

 

 

프레임워크는 기업 프로젝트에 있어 편리한 유지보수, 개발 생산성 증대를 위해 필수적인 기술이지만 웹 응용 프로그램을 개발하기 위해 프레임워크가 반드시 필요한 건 아니다.

'CS 공부 > 컴공 기초' 카테고리의 다른 글

[운영체제] kocw 반효경 교수님 강의 정리  (0) 2024.05.19
객체지향 vs 절차지향 프로그래밍  (0) 2021.01.22
코틀린(Kotlin)  (0) 2021.01.22

+ Recent posts