diff --git a/.idea/vcs.xml b/.idea/vcs.xml
deleted file mode 100644
index 94a25f7..0000000
--- a/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/build.xml b/build.xml
new file mode 100644
index 0000000..7fb9177
--- /dev/null
+++ b/build.xml
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+
+
+
+ Builds, tests, and runs the project TextClassifierProject.
+
+
+
diff --git a/lib/antlr-2.7.7.jar b/lib/antlr-2.7.7.jar
new file mode 100644
index 0000000..5e5f14b
Binary files /dev/null and b/lib/antlr-2.7.7.jar differ
diff --git a/lib/classmate-1.3.0.jar b/lib/classmate-1.3.0.jar
new file mode 100644
index 0000000..049b63f
Binary files /dev/null and b/lib/classmate-1.3.0.jar differ
diff --git a/lib/dom4j-1.6.1.jar b/lib/dom4j-1.6.1.jar
new file mode 100644
index 0000000..c8c4dbb
Binary files /dev/null and b/lib/dom4j-1.6.1.jar differ
diff --git a/lib/hibernate-commons-annotations-5.0.1.Final.jar b/lib/hibernate-commons-annotations-5.0.1.Final.jar
new file mode 100644
index 0000000..82e425d
Binary files /dev/null and b/lib/hibernate-commons-annotations-5.0.1.Final.jar differ
diff --git a/lib/hibernate-core-5.2.12.Final.jar b/lib/hibernate-core-5.2.12.Final.jar
new file mode 100644
index 0000000..9f1e9c1
Binary files /dev/null and b/lib/hibernate-core-5.2.12.Final.jar differ
diff --git a/lib/hibernate-jpa-2.1-api-1.0.0.Final.jar b/lib/hibernate-jpa-2.1-api-1.0.0.Final.jar
new file mode 100644
index 0000000..e2f2c59
Binary files /dev/null and b/lib/hibernate-jpa-2.1-api-1.0.0.Final.jar differ
diff --git a/lib/jandex-2.0.3.Final.jar b/lib/jandex-2.0.3.Final.jar
new file mode 100644
index 0000000..00c9dc2
Binary files /dev/null and b/lib/jandex-2.0.3.Final.jar differ
diff --git a/lib/javassist-3.20.0-GA.jar b/lib/javassist-3.20.0-GA.jar
new file mode 100644
index 0000000..0f1ff72
Binary files /dev/null and b/lib/javassist-3.20.0-GA.jar differ
diff --git a/lib/jboss-logging-3.3.0.Final.jar b/lib/jboss-logging-3.3.0.Final.jar
new file mode 100644
index 0000000..ea45d4d
Binary files /dev/null and b/lib/jboss-logging-3.3.0.Final.jar differ
diff --git a/lib/jboss-transaction-api_1.2_spec-1.0.1.Final.jar b/lib/jboss-transaction-api_1.2_spec-1.0.1.Final.jar
new file mode 100644
index 0000000..2113cc0
Binary files /dev/null and b/lib/jboss-transaction-api_1.2_spec-1.0.1.Final.jar differ
diff --git a/lib/mysql-connector-java-5.0.8-bin.jar b/lib/mysql-connector-java-5.0.8-bin.jar
new file mode 100644
index 0000000..0170c3e
Binary files /dev/null and b/lib/mysql-connector-java-5.0.8-bin.jar differ
diff --git a/nbproject/build-impl.xml b/nbproject/build-impl.xml
new file mode 100644
index 0000000..9830a0e
--- /dev/null
+++ b/nbproject/build-impl.xml
@@ -0,0 +1,1420 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must set src.dir
+ Must set test.src.dir
+ Must set build.dir
+ Must set dist.dir
+ Must set build.classes.dir
+ Must set dist.javadoc.dir
+ Must set build.test.classes.dir
+ Must set build.test.results.dir
+ Must set build.classes.excludes
+ Must set dist.jar
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must set javac.includes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ No tests executed.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must set JVM to use for profiling in profiler.info.jvm
+ Must set profiler agent JVM arguments in profiler.info.jvmargs.agent
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select some files in the IDE or set javac.includes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ To run this application from the command line without Ant, try:
+
+ java -jar "${dist.jar.resolved}"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set run.class
+
+
+
+ Must select one file in the IDE or set run.class
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set debug.class
+
+
+
+
+ Must select one file in the IDE or set debug.class
+
+
+
+
+ Must set fix.includes
+
+
+
+
+
+
+
+
+
+ This target only works when run from inside the NetBeans IDE.
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set profile.class
+ This target only works when run from inside the NetBeans IDE.
+
+
+
+
+
+
+
+
+ This target only works when run from inside the NetBeans IDE.
+
+
+
+
+
+
+
+
+
+
+
+
+ This target only works when run from inside the NetBeans IDE.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set run.class
+
+
+
+
+
+ Must select some files in the IDE or set test.includes
+
+
+
+
+ Must select one file in the IDE or set run.class
+
+
+
+
+ Must select one file in the IDE or set applet.url
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select some files in the IDE or set javac.includes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Some tests failed; see details above.
+
+
+
+
+
+
+
+
+ Must select some files in the IDE or set test.includes
+
+
+
+ Some tests failed; see details above.
+
+
+
+ Must select some files in the IDE or set test.class
+ Must select some method in the IDE or set test.method
+
+
+
+ Some tests failed; see details above.
+
+
+
+
+ Must select one file in the IDE or set test.class
+
+
+
+ Must select one file in the IDE or set test.class
+ Must select some method in the IDE or set test.method
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set applet.url
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set applet.url
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/nbproject/genfiles.properties b/nbproject/genfiles.properties
new file mode 100644
index 0000000..8e99bbf
--- /dev/null
+++ b/nbproject/genfiles.properties
@@ -0,0 +1,8 @@
+build.xml.data.CRC32=0fd20a72
+build.xml.script.CRC32=687418d1
+build.xml.stylesheet.CRC32=8064a381@1.80.1.48
+# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
+# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
+nbproject/build-impl.xml.data.CRC32=0fd20a72
+nbproject/build-impl.xml.script.CRC32=fbbe4592
+nbproject/build-impl.xml.stylesheet.CRC32=830a3534@1.80.1.48
diff --git a/nbproject/private/private.properties b/nbproject/private/private.properties
new file mode 100644
index 0000000..8acf1dc
--- /dev/null
+++ b/nbproject/private/private.properties
@@ -0,0 +1,2 @@
+compile.on.save=true
+user.properties.file=C:\\Users\\1\\AppData\\Roaming\\NetBeans\\8.2\\build.properties
diff --git a/nbproject/private/private.xml b/nbproject/private/private.xml
new file mode 100644
index 0000000..6807a2b
--- /dev/null
+++ b/nbproject/private/private.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/nbproject/project.properties b/nbproject/project.properties
new file mode 100644
index 0000000..8de8683
--- /dev/null
+++ b/nbproject/project.properties
@@ -0,0 +1,74 @@
+annotation.processing.enabled=true
+annotation.processing.enabled.in.editor=false
+annotation.processing.processor.options=
+annotation.processing.processors.list=
+annotation.processing.run.all.processors=true
+annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output
+build.classes.dir=${build.dir}/classes
+build.classes.excludes=**/*.java,**/*.form
+# This directory is removed when the project is cleaned:
+build.dir=build
+build.generated.dir=${build.dir}/generated
+build.generated.sources.dir=${build.dir}/generated-sources
+# Only compile against the classpath explicitly listed here:
+build.sysclasspath=ignore
+build.test.classes.dir=${build.dir}/test/classes
+build.test.results.dir=${build.dir}/test/results
+# Uncomment to specify the preferred debugger connection transport:
+#debug.transport=dt_socket
+debug.classpath=\
+ ${run.classpath}
+debug.test.classpath=\
+ ${run.test.classpath}
+# Files in build.classes.dir which should be excluded from distribution jar
+dist.archive.excludes=
+# This directory is removed when the project is cleaned:
+dist.dir=dist
+dist.jar=${dist.dir}/TextClassifierProject.jar
+dist.javadoc.dir=${dist.dir}/javadoc
+excludes=
+includes=**
+jar.compress=false
+javac.classpath=
+# Space-separated list of extra javac options
+javac.compilerargs=
+javac.deprecation=false
+javac.external.vm=true
+javac.processorpath=\
+ ${javac.classpath}
+javac.source=1.8
+javac.target=1.8
+javac.test.classpath=\
+ ${javac.classpath}:\
+ ${build.classes.dir}
+javac.test.processorpath=\
+ ${javac.test.classpath}
+javadoc.additionalparam=
+javadoc.author=false
+javadoc.encoding=${source.encoding}
+javadoc.noindex=false
+javadoc.nonavbar=false
+javadoc.notree=false
+javadoc.private=false
+javadoc.splitindex=true
+javadoc.use=true
+javadoc.version=false
+javadoc.windowtitle=
+main.class=
+manifest.file=manifest.mf
+meta.inf.dir=${src.dir}/META-INF
+mkdist.disabled=false
+platform.active=default_platform
+run.classpath=\
+ ${javac.classpath}:\
+ ${build.classes.dir}
+# Space-separated list of JVM arguments used when running the project.
+# You may also define separate properties like run-sys-prop.name=value instead of -Dname=value.
+# To set system properties for unit tests define test-sys-prop.name=value:
+run.jvmargs=
+run.test.classpath=\
+ ${javac.test.classpath}:\
+ ${build.test.classes.dir}
+source.encoding=UTF-8
+src.dir=src
+test.src.dir=test
diff --git a/nbproject/project.xml b/nbproject/project.xml
new file mode 100644
index 0000000..764375f
--- /dev/null
+++ b/nbproject/project.xml
@@ -0,0 +1,15 @@
+
+
+ org.netbeans.modules.java.j2seproject
+
+
+ TextClassifierProject
+
+
+
+
+
+
+
+
+
diff --git a/out/production/TextClassfierProject/dumps/homework_passwords.sql b/out/production/TextClassfierProject/dumps/homework_passwords.sql
new file mode 100644
index 0000000..3b48894
--- /dev/null
+++ b/out/production/TextClassfierProject/dumps/homework_passwords.sql
@@ -0,0 +1,55 @@
+CREATE DATABASE IF NOT EXISTS `homework` /*!40100 DEFAULT CHARACTER SET utf8 */;
+USE `homework`;
+-- MySQL dump 10.13 Distrib 5.7.12, for Win64 (x86_64)
+--
+-- Host: 127.0.0.1 Database: homework
+-- ------------------------------------------------------
+-- Server version 5.7.15-log
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Table structure for table `passwords`
+--
+
+DROP TABLE IF EXISTS `passwords`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `passwords` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `user_id` int(11) NOT NULL,
+ `password` varchar(45) NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `id` (`user_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `passwords`
+--
+
+LOCK TABLES `passwords` WRITE;
+/*!40000 ALTER TABLE `passwords` DISABLE KEYS */;
+INSERT INTO `passwords` VALUES (2,2,'12345');
+/*!40000 ALTER TABLE `passwords` ENABLE KEYS */;
+UNLOCK TABLES;
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2017-11-26 22:59:36
diff --git a/out/production/TextClassfierProject/dumps/homework_users.sql b/out/production/TextClassfierProject/dumps/homework_users.sql
new file mode 100644
index 0000000..fae4347
--- /dev/null
+++ b/out/production/TextClassfierProject/dumps/homework_users.sql
@@ -0,0 +1,54 @@
+CREATE DATABASE IF NOT EXISTS `homework` /*!40100 DEFAULT CHARACTER SET utf8 */;
+USE `homework`;
+-- MySQL dump 10.13 Distrib 5.7.12, for Win64 (x86_64)
+--
+-- Host: 127.0.0.1 Database: homework
+-- ------------------------------------------------------
+-- Server version 5.7.15-log
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Table structure for table `users`
+--
+
+DROP TABLE IF EXISTS `users`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `users` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `login` varchar(45) NOT NULL,
+ `age` int(3) NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `users`
+--
+
+LOCK TABLES `users` WRITE;
+/*!40000 ALTER TABLE `users` DISABLE KEYS */;
+INSERT INTO `users` VALUES (2,'maks081197',20);
+/*!40000 ALTER TABLE `users` ENABLE KEYS */;
+UNLOCK TABLES;
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2017-11-26 22:59:36
diff --git a/out/production/TextClassfierProject/hibernate.cfg.xml b/out/production/TextClassfierProject/hibernate.cfg.xml
new file mode 100644
index 0000000..4ee96ce
--- /dev/null
+++ b/out/production/TextClassfierProject/hibernate.cfg.xml
@@ -0,0 +1,14 @@
+
+
+
+
+ jdbc:mysql://localhost:3306/homework
+ com.mysql.jdbc.Driver
+ root
+ gjy7514wvmxeq54
+
+
+
+
\ No newline at end of file
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/diagramBomberman/GameObject.class b/out/production/TextClassfierProject/ru/caf82/lectures/diagramBomberman/GameObject.class
new file mode 100644
index 0000000..b15820a
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/diagramBomberman/GameObject.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/diagramBomberman/GameSession.class b/out/production/TextClassfierProject/ru/caf82/lectures/diagramBomberman/GameSession.class
new file mode 100644
index 0000000..1651fa4
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/diagramBomberman/GameSession.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/diagramBomberman/Movable.class b/out/production/TextClassfierProject/ru/caf82/lectures/diagramBomberman/Movable.class
new file mode 100644
index 0000000..bf8113d
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/diagramBomberman/Movable.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/diagramBomberman/Positioanable.class b/out/production/TextClassfierProject/ru/caf82/lectures/diagramBomberman/Positioanable.class
new file mode 100644
index 0000000..dca9d1b
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/diagramBomberman/Positioanable.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/diagramBomberman/Temporary.class b/out/production/TextClassfierProject/ru/caf82/lectures/diagramBomberman/Temporary.class
new file mode 100644
index 0000000..2fbe339
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/diagramBomberman/Temporary.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/diagramBomberman/Tickable.class b/out/production/TextClassfierProject/ru/caf82/lectures/diagramBomberman/Tickable.class
new file mode 100644
index 0000000..839dc93
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/diagramBomberman/Tickable.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/BoxingExample.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/BoxingExample.class
new file mode 100644
index 0000000..2d41cd2
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/BoxingExample.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/BreakAndContinueExample.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/BreakAndContinueExample.class
new file mode 100644
index 0000000..fee3117
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/BreakAndContinueExample.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/CalculatorExample.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/CalculatorExample.class
new file mode 100644
index 0000000..cba6209
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/CalculatorExample.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/CommentsExample.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/CommentsExample.class
new file mode 100644
index 0000000..6b31809
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/CommentsExample.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/ConstructorExample$Rectangular.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/ConstructorExample$Rectangular.class
new file mode 100644
index 0000000..0134209
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/ConstructorExample$Rectangular.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/ConstructorExample.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/ConstructorExample.class
new file mode 100644
index 0000000..29425b9
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/ConstructorExample.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/ForAndForEachExample.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/ForAndForEachExample.class
new file mode 100644
index 0000000..07149a9
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/ForAndForEachExample.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/IfElseAndSwitchCaseExample.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/IfElseAndSwitchCaseExample.class
new file mode 100644
index 0000000..ff3a192
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/IfElseAndSwitchCaseExample.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/LinkTypes.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/LinkTypes.class
new file mode 100644
index 0000000..cb9679d
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/LinkTypes.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/OperatorsExample.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/OperatorsExample.class
new file mode 100644
index 0000000..69ad417
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/OperatorsExample.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/PrimitiveTypes.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/PrimitiveTypes.class
new file mode 100644
index 0000000..c449979
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/PrimitiveTypes.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/StringProcessing.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/StringProcessing.class
new file mode 100644
index 0000000..7585d1c
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/StringProcessing.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/WhileAndDoWhileExample.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/WhileAndDoWhileExample.class
new file mode 100644
index 0000000..d5a3e54
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture02/WhileAndDoWhileExample.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/AbstractAnimal.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/AbstractAnimal.class
new file mode 100644
index 0000000..ea9922f
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/AbstractAnimal.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/Animal.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/Animal.class
new file mode 100644
index 0000000..4250e08
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/Animal.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/Cat.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/Cat.class
new file mode 100644
index 0000000..7c4df90
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/Cat.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/CompositionExample.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/CompositionExample.class
new file mode 100644
index 0000000..e0616f1
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/CompositionExample.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/Crocodile.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/Crocodile.class
new file mode 100644
index 0000000..82bae47
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/Crocodile.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/Dishware.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/Dishware.class
new file mode 100644
index 0000000..567cdc1
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/Dishware.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/Dog.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/Dog.class
new file mode 100644
index 0000000..cc1a267
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/Dog.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/InheritanceExample.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/InheritanceExample.class
new file mode 100644
index 0000000..c923df7
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/InheritanceExample.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/InterfaceExample.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/InterfaceExample.class
new file mode 100644
index 0000000..7d1e20e
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/InterfaceExample.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/Kitty.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/Kitty.class
new file mode 100644
index 0000000..536b22d
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/Kitty.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/PassByValue.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/PassByValue.class
new file mode 100644
index 0000000..b77ff91
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/PassByValue.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/PolymorphysmExample.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/PolymorphysmExample.class
new file mode 100644
index 0000000..7f655f9
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/PolymorphysmExample.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/Season$1.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/Season$1.class
new file mode 100644
index 0000000..07897ae
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/Season$1.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/Season.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/Season.class
new file mode 100644
index 0000000..591f422
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/Season.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/Tiger.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/Tiger.class
new file mode 100644
index 0000000..84abf6e
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/Tiger.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/Washable.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/Washable.class
new file mode 100644
index 0000000..79fdc8f
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/Washable.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/Zoo.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/Zoo.class
new file mode 100644
index 0000000..0775728
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture03/Zoo.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture04/DivideOnZero.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture04/DivideOnZero.class
new file mode 100644
index 0000000..88fb53d
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture04/DivideOnZero.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture04/ExceptionCatchingExample.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture04/ExceptionCatchingExample.class
new file mode 100644
index 0000000..4b6d9fd
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture04/ExceptionCatchingExample.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture04/ExceptionCatchingIhExample.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture04/ExceptionCatchingIhExample.class
new file mode 100644
index 0000000..e99a4e6
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture04/ExceptionCatchingIhExample.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture04/MyExceptionClassExample.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture04/MyExceptionClassExample.class
new file mode 100644
index 0000000..6443809
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture04/MyExceptionClassExample.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture04/StackTraceExample.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture04/StackTraceExample.class
new file mode 100644
index 0000000..cf621d3
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture04/StackTraceExample.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture04/TemplateForMyExceptionClass.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture04/TemplateForMyExceptionClass.class
new file mode 100644
index 0000000..8e9a99f
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture04/TemplateForMyExceptionClass.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture04/ThrowExample$NegException.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture04/ThrowExample$NegException.class
new file mode 100644
index 0000000..2afbf2d
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture04/ThrowExample$NegException.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture04/ThrowExample.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture04/ThrowExample.class
new file mode 100644
index 0000000..a62defa
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture04/ThrowExample.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lecture04/WorkWithExceptions.class b/out/production/TextClassfierProject/ru/caf82/lectures/lecture04/WorkWithExceptions.class
new file mode 100644
index 0000000..10378ce
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lecture04/WorkWithExceptions.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lectureDB/HibernateUtil.class b/out/production/TextClassfierProject/ru/caf82/lectures/lectureDB/HibernateUtil.class
new file mode 100644
index 0000000..7893188
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lectureDB/HibernateUtil.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lectureDB/Password.class b/out/production/TextClassfierProject/ru/caf82/lectures/lectureDB/Password.class
new file mode 100644
index 0000000..c73b76f
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lectureDB/Password.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lectureDB/User.class b/out/production/TextClassfierProject/ru/caf82/lectures/lectureDB/User.class
new file mode 100644
index 0000000..b5f0d34
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lectureDB/User.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lectureDB/UserManager.class b/out/production/TextClassfierProject/ru/caf82/lectures/lectureDB/UserManager.class
new file mode 100644
index 0000000..1a6c6fa
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lectureDB/UserManager.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lectureSwing/FrameExecutor.class b/out/production/TextClassfierProject/ru/caf82/lectures/lectureSwing/FrameExecutor.class
new file mode 100644
index 0000000..5f934d9
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lectureSwing/FrameExecutor.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lectureSwing/SwingManager.class b/out/production/TextClassfierProject/ru/caf82/lectures/lectureSwing/SwingManager.class
new file mode 100644
index 0000000..5e6cff2
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lectureSwing/SwingManager.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lectureSwing/tests/ActionListenerTest$1.class b/out/production/TextClassfierProject/ru/caf82/lectures/lectureSwing/tests/ActionListenerTest$1.class
new file mode 100644
index 0000000..5c240f9
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lectureSwing/tests/ActionListenerTest$1.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lectureSwing/tests/ActionListenerTest.class b/out/production/TextClassfierProject/ru/caf82/lectures/lectureSwing/tests/ActionListenerTest.class
new file mode 100644
index 0000000..1479b5f
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lectureSwing/tests/ActionListenerTest.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lectureSwing/tests/ChangeListenerTest$1.class b/out/production/TextClassfierProject/ru/caf82/lectures/lectureSwing/tests/ChangeListenerTest$1.class
new file mode 100644
index 0000000..3fd07dc
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lectureSwing/tests/ChangeListenerTest$1.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lectureSwing/tests/ChangeListenerTest.class b/out/production/TextClassfierProject/ru/caf82/lectures/lectureSwing/tests/ChangeListenerTest.class
new file mode 100644
index 0000000..e0a25f0
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lectureSwing/tests/ChangeListenerTest.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lectureSwing/tests/ItemListenerTest$1.class b/out/production/TextClassfierProject/ru/caf82/lectures/lectureSwing/tests/ItemListenerTest$1.class
new file mode 100644
index 0000000..621949c
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lectureSwing/tests/ItemListenerTest$1.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lectureSwing/tests/ItemListenerTest.class b/out/production/TextClassfierProject/ru/caf82/lectures/lectureSwing/tests/ItemListenerTest.class
new file mode 100644
index 0000000..6c19505
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lectureSwing/tests/ItemListenerTest.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lectureSwing/tests/MouseListenerTest$1.class b/out/production/TextClassfierProject/ru/caf82/lectures/lectureSwing/tests/MouseListenerTest$1.class
new file mode 100644
index 0000000..c129b1d
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lectureSwing/tests/MouseListenerTest$1.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lectureSwing/tests/MouseListenerTest$2.class b/out/production/TextClassfierProject/ru/caf82/lectures/lectureSwing/tests/MouseListenerTest$2.class
new file mode 100644
index 0000000..7d44d9b
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lectureSwing/tests/MouseListenerTest$2.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/lectures/lectureSwing/tests/MouseListenerTest.class b/out/production/TextClassfierProject/ru/caf82/lectures/lectureSwing/tests/MouseListenerTest.class
new file mode 100644
index 0000000..7bc14a7
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/lectures/lectureSwing/tests/MouseListenerTest.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/result/MyOwnArrayList$1.class b/out/production/TextClassfierProject/ru/caf82/result/MyOwnArrayList$1.class
new file mode 100644
index 0000000..b7b6ea5
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/result/MyOwnArrayList$1.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/result/MyOwnArrayList.class b/out/production/TextClassfierProject/ru/caf82/result/MyOwnArrayList.class
new file mode 100644
index 0000000..9b84ab9
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/result/MyOwnArrayList.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/result/MyOwnLinkedList$1.class b/out/production/TextClassfierProject/ru/caf82/result/MyOwnLinkedList$1.class
new file mode 100644
index 0000000..2ae95ec
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/result/MyOwnLinkedList$1.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/result/MyOwnLinkedList$Node.class b/out/production/TextClassfierProject/ru/caf82/result/MyOwnLinkedList$Node.class
new file mode 100644
index 0000000..0f9b532
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/result/MyOwnLinkedList$Node.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/result/MyOwnLinkedList.class b/out/production/TextClassfierProject/ru/caf82/result/MyOwnLinkedList.class
new file mode 100644
index 0000000..c6ef740
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/result/MyOwnLinkedList.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/result/exceptions/EmptyArrayException.class b/out/production/TextClassfierProject/ru/caf82/result/exceptions/EmptyArrayException.class
new file mode 100644
index 0000000..771889c
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/result/exceptions/EmptyArrayException.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/result/exceptions/InconveninentShapeException.class b/out/production/TextClassfierProject/ru/caf82/result/exceptions/InconveninentShapeException.class
new file mode 100644
index 0000000..b188488
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/result/exceptions/InconveninentShapeException.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/result/machinelearning/models/AbstractModel.class b/out/production/TextClassfierProject/ru/caf82/result/machinelearning/models/AbstractModel.class
new file mode 100644
index 0000000..0f21ccb
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/result/machinelearning/models/AbstractModel.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/result/machinelearning/models/Boosting.class b/out/production/TextClassfierProject/ru/caf82/result/machinelearning/models/Boosting.class
new file mode 100644
index 0000000..ccd3ed8
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/result/machinelearning/models/Boosting.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/result/machinelearning/models/KNeighbourhood.class b/out/production/TextClassfierProject/ru/caf82/result/machinelearning/models/KNeighbourhood.class
new file mode 100644
index 0000000..7943a6c
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/result/machinelearning/models/KNeighbourhood.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/result/machinelearning/models/LinearKernel.class b/out/production/TextClassfierProject/ru/caf82/result/machinelearning/models/LinearKernel.class
new file mode 100644
index 0000000..7938ef6
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/result/machinelearning/models/LinearKernel.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/result/machinelearning/models/LogisticRegression.class b/out/production/TextClassfierProject/ru/caf82/result/machinelearning/models/LogisticRegression.class
new file mode 100644
index 0000000..3a88880
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/result/machinelearning/models/LogisticRegression.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/result/machinelearning/models/NaiveBayes.class b/out/production/TextClassfierProject/ru/caf82/result/machinelearning/models/NaiveBayes.class
new file mode 100644
index 0000000..6c81a26
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/result/machinelearning/models/NaiveBayes.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/result/machinelearning/models/NormalKernel.class b/out/production/TextClassfierProject/ru/caf82/result/machinelearning/models/NormalKernel.class
new file mode 100644
index 0000000..ecd05cc
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/result/machinelearning/models/NormalKernel.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/result/machinelearning/preprocessing/CountVectorizer.class b/out/production/TextClassfierProject/ru/caf82/result/machinelearning/preprocessing/CountVectorizer.class
new file mode 100644
index 0000000..e454cc3
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/result/machinelearning/preprocessing/CountVectorizer.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/result/machinelearning/preprocessing/PorterStemmer.class b/out/production/TextClassfierProject/ru/caf82/result/machinelearning/preprocessing/PorterStemmer.class
new file mode 100644
index 0000000..628098b
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/result/machinelearning/preprocessing/PorterStemmer.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/result/machinelearning/preprocessing/SequenceProcessor.class b/out/production/TextClassfierProject/ru/caf82/result/machinelearning/preprocessing/SequenceProcessor.class
new file mode 100644
index 0000000..20c5d36
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/result/machinelearning/preprocessing/SequenceProcessor.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/result/machinelearning/preprocessing/TfldfVectorizer.class b/out/production/TextClassfierProject/ru/caf82/result/machinelearning/preprocessing/TfldfVectorizer.class
new file mode 100644
index 0000000..e06f069
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/result/machinelearning/preprocessing/TfldfVectorizer.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/result/machinelearning/preprocessing/Transformer.class b/out/production/TextClassfierProject/ru/caf82/result/machinelearning/preprocessing/Transformer.class
new file mode 100644
index 0000000..c456de6
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/result/machinelearning/preprocessing/Transformer.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/result/machinelearning/preprocessing/WordProcessor.class b/out/production/TextClassfierProject/ru/caf82/result/machinelearning/preprocessing/WordProcessor.class
new file mode 100644
index 0000000..40e1aed
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/result/machinelearning/preprocessing/WordProcessor.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/result/others/Dao.class b/out/production/TextClassfierProject/ru/caf82/result/others/Dao.class
new file mode 100644
index 0000000..9888da6
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/result/others/Dao.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/result/others/DaoImplementation.class b/out/production/TextClassfierProject/ru/caf82/result/others/DaoImplementation.class
new file mode 100644
index 0000000..64bdee4
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/result/others/DaoImplementation.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/result/others/MathService.class b/out/production/TextClassfierProject/ru/caf82/result/others/MathService.class
new file mode 100644
index 0000000..167189b
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/result/others/MathService.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/result/others/ModelSelectionHibernateEntity.class b/out/production/TextClassfierProject/ru/caf82/result/others/ModelSelectionHibernateEntity.class
new file mode 100644
index 0000000..652d262
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/result/others/ModelSelectionHibernateEntity.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/result/others/ReviewHibernateEntity.class b/out/production/TextClassfierProject/ru/caf82/result/others/ReviewHibernateEntity.class
new file mode 100644
index 0000000..853f290
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/result/others/ReviewHibernateEntity.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/result/others/SwingModel.class b/out/production/TextClassfierProject/ru/caf82/result/others/SwingModel.class
new file mode 100644
index 0000000..b306059
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/result/others/SwingModel.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/result/others/SwingTraining.class b/out/production/TextClassfierProject/ru/caf82/result/others/SwingTraining.class
new file mode 100644
index 0000000..33defa2
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/result/others/SwingTraining.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/result/workwithfiles/FileReader.class b/out/production/TextClassfierProject/ru/caf82/result/workwithfiles/FileReader.class
new file mode 100644
index 0000000..99e6d2f
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/result/workwithfiles/FileReader.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/result/workwithfiles/FileWorker.class b/out/production/TextClassfierProject/ru/caf82/result/workwithfiles/FileWorker.class
new file mode 100644
index 0000000..1e230d4
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/result/workwithfiles/FileWorker.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/result/workwithfiles/FileWriter.class b/out/production/TextClassfierProject/ru/caf82/result/workwithfiles/FileWriter.class
new file mode 100644
index 0000000..cec15bc
Binary files /dev/null and b/out/production/TextClassfierProject/ru/caf82/result/workwithfiles/FileWriter.class differ
diff --git a/out/production/TextClassfierProject/ru/caf82/result/workwithfiles/file_for_save_models b/out/production/TextClassfierProject/ru/caf82/result/workwithfiles/file_for_save_models
new file mode 100644
index 0000000..e69de29
diff --git a/resources/dumps/homework_passwords.sql b/resources/dumps/homework_passwords.sql
new file mode 100644
index 0000000..3b48894
--- /dev/null
+++ b/resources/dumps/homework_passwords.sql
@@ -0,0 +1,55 @@
+CREATE DATABASE IF NOT EXISTS `homework` /*!40100 DEFAULT CHARACTER SET utf8 */;
+USE `homework`;
+-- MySQL dump 10.13 Distrib 5.7.12, for Win64 (x86_64)
+--
+-- Host: 127.0.0.1 Database: homework
+-- ------------------------------------------------------
+-- Server version 5.7.15-log
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Table structure for table `passwords`
+--
+
+DROP TABLE IF EXISTS `passwords`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `passwords` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `user_id` int(11) NOT NULL,
+ `password` varchar(45) NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `id` (`user_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `passwords`
+--
+
+LOCK TABLES `passwords` WRITE;
+/*!40000 ALTER TABLE `passwords` DISABLE KEYS */;
+INSERT INTO `passwords` VALUES (2,2,'12345');
+/*!40000 ALTER TABLE `passwords` ENABLE KEYS */;
+UNLOCK TABLES;
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2017-11-26 22:59:36
diff --git a/resources/dumps/homework_users.sql b/resources/dumps/homework_users.sql
new file mode 100644
index 0000000..fae4347
--- /dev/null
+++ b/resources/dumps/homework_users.sql
@@ -0,0 +1,54 @@
+CREATE DATABASE IF NOT EXISTS `homework` /*!40100 DEFAULT CHARACTER SET utf8 */;
+USE `homework`;
+-- MySQL dump 10.13 Distrib 5.7.12, for Win64 (x86_64)
+--
+-- Host: 127.0.0.1 Database: homework
+-- ------------------------------------------------------
+-- Server version 5.7.15-log
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Table structure for table `users`
+--
+
+DROP TABLE IF EXISTS `users`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `users` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `login` varchar(45) NOT NULL,
+ `age` int(3) NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `users`
+--
+
+LOCK TABLES `users` WRITE;
+/*!40000 ALTER TABLE `users` DISABLE KEYS */;
+INSERT INTO `users` VALUES (2,'maks081197',20);
+/*!40000 ALTER TABLE `users` ENABLE KEYS */;
+UNLOCK TABLES;
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2017-11-26 22:59:36
diff --git a/resources/hibernate.cfg.xml b/resources/hibernate.cfg.xml
new file mode 100644
index 0000000..4ee96ce
--- /dev/null
+++ b/resources/hibernate.cfg.xml
@@ -0,0 +1,14 @@
+
+
+
+
+ jdbc:mysql://localhost:3306/homework
+ com.mysql.jdbc.Driver
+ root
+ gjy7514wvmxeq54
+
+
+
+
\ No newline at end of file
diff --git a/result/src/main/java/ru/caf82/result/machinelearning/preprocessing/CountVectorizer.java b/result/src/main/java/ru/caf82/result/machinelearning/preprocessing/CountVectorizer.java
deleted file mode 100644
index 7038ad8..0000000
--- a/result/src/main/java/ru/caf82/result/machinelearning/preprocessing/CountVectorizer.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package ru.caf82.result.machinelearning.preprocessing;
-
-/**
- * Created by ilysko on 03.08.17.
- */
-public class CountVectorizer implements SequenceProcessor, Transformer {
-}
diff --git a/result/src/main/java/ru/caf82/result/machinelearning/preprocessing/PorterStemmer.java b/result/src/main/java/ru/caf82/result/machinelearning/preprocessing/PorterStemmer.java
deleted file mode 100644
index 02fcf81..0000000
--- a/result/src/main/java/ru/caf82/result/machinelearning/preprocessing/PorterStemmer.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package ru.caf82.result.machinelearning.preprocessing;
-
-/**
- * Created by ilysko on 03.08.17.
- */
-public class PorterStemmer implements Transformer, WordProcessor {
-}
diff --git a/result/src/main/java/ru/caf82/result/machinelearning/preprocessing/SequenceProcessor.java b/result/src/main/java/ru/caf82/result/machinelearning/preprocessing/SequenceProcessor.java
deleted file mode 100644
index 65e46d9..0000000
--- a/result/src/main/java/ru/caf82/result/machinelearning/preprocessing/SequenceProcessor.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package ru.caf82.result.machinelearning.preprocessing;
-
-/**
- * Created by ilysko on 03.08.17.
- */
-public interface SequenceProcessor {
-}
diff --git a/result/src/main/java/ru/caf82/result/machinelearning/preprocessing/TfidfVectorizer.java b/result/src/main/java/ru/caf82/result/machinelearning/preprocessing/TfidfVectorizer.java
deleted file mode 100644
index cf212ba..0000000
--- a/result/src/main/java/ru/caf82/result/machinelearning/preprocessing/TfidfVectorizer.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package ru.caf82.result.machinelearning.preprocessing;
-
-/**
- * Created by ilysko on 03.08.17.
- */
-public class TfidfVectorizer implements SequenceProcessor, Transformer {
-}
diff --git a/result/src/main/java/ru/caf82/result/machinelearning/preprocessing/Transformer.java b/result/src/main/java/ru/caf82/result/machinelearning/preprocessing/Transformer.java
deleted file mode 100644
index b94b278..0000000
--- a/result/src/main/java/ru/caf82/result/machinelearning/preprocessing/Transformer.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package ru.caf82.result.machinelearning.preprocessing;
-
-/**
- * Created by ilysko on 03.08.17.
- */
-public interface Transformer {
-}
diff --git a/result/src/main/java/ru/caf82/result/machinelearning/preprocessing/WordProcessor.java b/result/src/main/java/ru/caf82/result/machinelearning/preprocessing/WordProcessor.java
deleted file mode 100644
index db8ead1..0000000
--- a/result/src/main/java/ru/caf82/result/machinelearning/preprocessing/WordProcessor.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package ru.caf82.result.machinelearning.preprocessing;
-
-/**
- * Created by ilysko on 03.08.17.
- */
-public interface WordProcessor {
-}
diff --git a/result/src/main/java/ru/caf82/result/workwithfiles/FileReader.java b/result/src/main/java/ru/caf82/result/workwithfiles/FileReader.java
deleted file mode 100644
index 993dc1d..0000000
--- a/result/src/main/java/ru/caf82/result/workwithfiles/FileReader.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package ru.caf82.result.workwithfiles;
-
-/**
- * Created by ilysko on 03.08.17.
- */
-public class FileReader implements FileWorker {
-}
diff --git a/result/src/main/java/ru/caf82/result/workwithfiles/FileWorker.java b/result/src/main/java/ru/caf82/result/workwithfiles/FileWorker.java
deleted file mode 100644
index 9fe4f42..0000000
--- a/result/src/main/java/ru/caf82/result/workwithfiles/FileWorker.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package ru.caf82.result.workwithfiles;
-
-/**
- * Created by ilysko on 03.08.17.
- */
-public interface FileWorker {
-}
diff --git a/result/src/main/java/ru/caf82/result/workwithfiles/FileWriter.java b/result/src/main/java/ru/caf82/result/workwithfiles/FileWriter.java
deleted file mode 100644
index 3de089c..0000000
--- a/result/src/main/java/ru/caf82/result/workwithfiles/FileWriter.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package ru.caf82.result.workwithfiles;
-
-/**
- * Created by ilysko on 03.08.17.
- */
-public class FileWriter implements FileWorker {
-}
diff --git a/src/ru/caf82/lectures/diagramBomberman/GameObject.java b/src/ru/caf82/lectures/diagramBomberman/GameObject.java
new file mode 100644
index 0000000..7006157
--- /dev/null
+++ b/src/ru/caf82/lectures/diagramBomberman/GameObject.java
@@ -0,0 +1,9 @@
+package ru.caf82.lectures.diagramBomberman;
+
+/**
+ * Created by ilysko on 18.09.17.
+ */
+public interface GameObject {
+ void start();
+ void finish();
+}
diff --git a/src/ru/caf82/lectures/diagramBomberman/GameSession.java b/src/ru/caf82/lectures/diagramBomberman/GameSession.java
new file mode 100644
index 0000000..4877b8f
--- /dev/null
+++ b/src/ru/caf82/lectures/diagramBomberman/GameSession.java
@@ -0,0 +1,11 @@
+package ru.caf82.lectures.diagramBomberman;
+
+/**
+ * Created by ilysko on 18.09.17.
+ */
+public class GameSession implements Tickable {
+ @Override
+ public void tick() {
+ System.out.println("tick!");
+ }
+}
diff --git a/src/ru/caf82/lectures/diagramBomberman/Movable.java b/src/ru/caf82/lectures/diagramBomberman/Movable.java
new file mode 100644
index 0000000..6629aa9
--- /dev/null
+++ b/src/ru/caf82/lectures/diagramBomberman/Movable.java
@@ -0,0 +1,8 @@
+package ru.caf82.lectures.diagramBomberman;
+
+/**
+ * Created by ilysko on 18.09.17.
+ */
+public interface Movable extends Positioanable, Tickable{
+ void move();
+}
diff --git a/src/ru/caf82/lectures/diagramBomberman/Positioanable.java b/src/ru/caf82/lectures/diagramBomberman/Positioanable.java
new file mode 100644
index 0000000..5b2a20e
--- /dev/null
+++ b/src/ru/caf82/lectures/diagramBomberman/Positioanable.java
@@ -0,0 +1,9 @@
+package ru.caf82.lectures.diagramBomberman;
+
+/**
+ * Created by ilysko on 18.09.17.
+ */
+public interface Positioanable extends GameObject {
+ int getXPosition();
+ int getYPosition();
+}
diff --git a/src/ru/caf82/lectures/diagramBomberman/Temporary.java b/src/ru/caf82/lectures/diagramBomberman/Temporary.java
new file mode 100644
index 0000000..e32ee17
--- /dev/null
+++ b/src/ru/caf82/lectures/diagramBomberman/Temporary.java
@@ -0,0 +1,9 @@
+package ru.caf82.lectures.diagramBomberman;
+
+/**
+ * Created by ilysko on 18.09.17.
+ */
+public interface Temporary extends GameObject {
+ int getBornTime();
+ int getFinishTime();
+}
diff --git a/src/ru/caf82/lectures/diagramBomberman/Tickable.java b/src/ru/caf82/lectures/diagramBomberman/Tickable.java
new file mode 100644
index 0000000..8d51018
--- /dev/null
+++ b/src/ru/caf82/lectures/diagramBomberman/Tickable.java
@@ -0,0 +1,8 @@
+package ru.caf82.lectures.diagramBomberman;
+
+/**
+ * Created by ilysko on 18.09.17.
+ */
+public interface Tickable {
+ void tick();
+}
diff --git a/src/ru/caf82/lectures/lecture02/BoxingExample.java b/src/ru/caf82/lectures/lecture02/BoxingExample.java
new file mode 100644
index 0000000..1f64c70
--- /dev/null
+++ b/src/ru/caf82/lectures/lecture02/BoxingExample.java
@@ -0,0 +1,26 @@
+package ru.caf82.lectures.lecture02;
+
+public class BoxingExample {
+
+ public static void main(String[] args) {
+ Integer i = Integer.valueOf(50);
+ Integer iTwo = Integer.valueOf(50);
+ Integer iThree = 50;
+
+ System.out.println(i == iThree);
+ System.out.println(i == iTwo);
+ System.out.println(i.equals(iThree));
+ System.out.println(i.equals(iTwo));
+
+ System.out.println("----------------------------------------");
+
+ Integer iNew = Integer.valueOf(1000);
+ Integer iNewTwo = Integer.valueOf(1000);
+ Integer iNewThree = 1000;
+
+ System.out.println(iNew == iNewThree);
+ System.out.println(iNew == iNewTwo);
+ System.out.println(iNew.equals(iNewThree));
+ System.out.println(iNew.equals(iNewTwo));
+ }
+}
diff --git a/src/ru/caf82/lectures/lecture02/BreakAndContinueExample.java b/src/ru/caf82/lectures/lecture02/BreakAndContinueExample.java
new file mode 100644
index 0000000..ad6005e
--- /dev/null
+++ b/src/ru/caf82/lectures/lecture02/BreakAndContinueExample.java
@@ -0,0 +1,44 @@
+package ru.caf82.lectures.lecture02;
+
+/**
+ * Created by ilysko on 24.08.17.
+ */
+public class BreakAndContinueExample {
+ public static void main(String[] args) {
+ // Break example
+ for (int i = 0; i < 100; i++) {
+ if (i == 4) {
+ break;
+ }
+ System.out.print(i + " ");
+ }
+
+ System.out.println();
+
+ // Continue example
+ for (int i = 0; i < 10; i++) {
+ if (i % 2 == 0) {
+ continue;
+ }
+ System.out.print(i + " ");
+ }
+
+ System.out.println("\n");
+
+ // Continue and Break with "tags"
+ outer:
+ for (int i = 0; i < 10; i++) {
+ inner:
+ for (int j = 0; j < 10; j++) {
+ if (j > i) {
+ System.out.println();
+ continue outer;
+ }
+ if (i == 8) {
+ break outer;
+ }
+ System.out.print(" " + (i * j));
+ }
+ }
+ }
+}
diff --git a/src/ru/caf82/lectures/lecture02/CalculatorExample.java b/src/ru/caf82/lectures/lecture02/CalculatorExample.java
new file mode 100644
index 0000000..edfa955
--- /dev/null
+++ b/src/ru/caf82/lectures/lecture02/CalculatorExample.java
@@ -0,0 +1,35 @@
+package ru.caf82.lectures.lecture02;
+
+public class CalculatorExample {
+ private int x;
+ private int y;
+
+ CalculatorExample(int x, int y) {
+ this.x = x;
+ this.y = y;
+ }
+
+ public void setX(int x) {
+ this.x = x;
+ }
+
+ public void setY(int y) {
+ this.y = y;
+ }
+
+ public int getSubst() {
+ return x-y;
+ }
+
+ public float getSum() {
+ return (float) x + y;
+ }
+
+ public static void main(String[] args) {
+ CalculatorExample calc = new CalculatorExample(5, 2);
+ System.out.println(calc.getSum());
+ System.out.println(calc.getSubst());
+
+ //todo create new calculator, add abs function from Math
+ }
+}
diff --git a/src/ru/caf82/lectures/lecture02/CommentsExample.java b/src/ru/caf82/lectures/lecture02/CommentsExample.java
new file mode 100644
index 0000000..7923149
--- /dev/null
+++ b/src/ru/caf82/lectures/lecture02/CommentsExample.java
@@ -0,0 +1,18 @@
+package ru.caf82.lectures.lecture02;
+
+/**
+ * @author ilysko
+ * @version 1.0
+ * Class for comment representation
+ */
+public class CommentsExample {
+ public static void main(String[] args) {
+ System.out.println("Let's look to comments in Java");
+ /*
+ * Realy big
+ * comment
+ */
+
+ //System.out.println("Cool!");
+ }
+}
diff --git a/src/ru/caf82/lectures/lecture02/ConstructorExample.java b/src/ru/caf82/lectures/lecture02/ConstructorExample.java
new file mode 100644
index 0000000..81727c9
--- /dev/null
+++ b/src/ru/caf82/lectures/lecture02/ConstructorExample.java
@@ -0,0 +1,15 @@
+package ru.caf82.lectures.lecture02;
+
+public class ConstructorExample {
+
+ public class Rectangular {
+
+ //todo create fields weight and length, create constructor, create method Square
+
+ }
+
+
+ public static void main(String[] args) {
+ //todo write some test
+ }
+}
diff --git a/src/ru/caf82/lectures/lecture02/ForAndForEachExample.java b/src/ru/caf82/lectures/lecture02/ForAndForEachExample.java
new file mode 100644
index 0000000..cb01679
--- /dev/null
+++ b/src/ru/caf82/lectures/lecture02/ForAndForEachExample.java
@@ -0,0 +1,17 @@
+package ru.caf82.lectures.lecture02;
+
+/**
+ * Created by ilysko on 24.08.17.
+ */
+public class ForAndForEachExample {
+ public static void main(String[] args) {
+ for (int i = 1; i < 5; i++) {
+ System.out.println("i = " + i);
+ }
+ System.out.println();
+ int[] intList = {1, 2, 3, 4};
+ for (int i : intList) {
+ System.out.println("i = " + i);
+ }
+ }
+}
diff --git a/src/ru/caf82/lectures/lecture02/IfElseAndSwitchCaseExample.java b/src/ru/caf82/lectures/lecture02/IfElseAndSwitchCaseExample.java
new file mode 100644
index 0000000..22f0f4a
--- /dev/null
+++ b/src/ru/caf82/lectures/lecture02/IfElseAndSwitchCaseExample.java
@@ -0,0 +1,32 @@
+package ru.caf82.lectures.lecture02;
+
+/**
+ * Created by ilysko on 24.08.17.
+ */
+public class IfElseAndSwitchCaseExample {
+ public static void main(String[] args) {
+ int myMark = 5;
+
+ if (myMark == 5) {
+ System.out.println("Excellent");
+ } else if (myMark <= 4 && myMark >=3) {
+ System.out.println("Not bad");
+ } else {
+ System.out.println("Bad");
+ }
+
+ switch (myMark) {
+ case 5:
+ System.out.println("Excellent");
+ break;
+ case 4:
+ System.out.println("Good");
+ break;
+ case 2:
+ System.out.println("Bad");
+ default:
+ System.out.println("Not bad");
+ break;
+ }
+ }
+}
diff --git a/src/ru/caf82/lectures/lecture02/LinkTypes.java b/src/ru/caf82/lectures/lecture02/LinkTypes.java
new file mode 100644
index 0000000..d3c581c
--- /dev/null
+++ b/src/ru/caf82/lectures/lecture02/LinkTypes.java
@@ -0,0 +1,32 @@
+package ru.caf82.lectures.lecture02;
+
+public class LinkTypes {
+
+ public static void main(String[] args) {
+ String a = "Hello", b = "World";
+
+ System.out.println(a + " " + b);
+
+ String c = 2 + 2 + "";
+ String d = "" + 2 + 2;
+ String g = "" + (2 + 2);
+
+ System.out.println(c);
+ System.out.println(d);
+ System.out.println(g);
+
+ String foo = "a string";
+ String bar = "a string";
+ String baz = new String("a string");
+
+ System.out.println("foo == bar ? " + (foo == bar));
+ System.out.println("foo равен bar ? " + (foo.equals(bar)));
+ System.out.println("foo == baz ? " + (foo == baz));
+ System.out.println("foo равен baz ? " + (foo.equals(baz)));
+
+
+
+ }
+
+
+}
diff --git a/src/ru/caf82/lectures/lecture02/OperatorsExample.class b/src/ru/caf82/lectures/lecture02/OperatorsExample.class
new file mode 100644
index 0000000..6a7c3df
Binary files /dev/null and b/src/ru/caf82/lectures/lecture02/OperatorsExample.class differ
diff --git a/src/ru/caf82/lectures/lecture02/OperatorsExample.java b/src/ru/caf82/lectures/lecture02/OperatorsExample.java
new file mode 100644
index 0000000..eb6bca6
--- /dev/null
+++ b/src/ru/caf82/lectures/lecture02/OperatorsExample.java
@@ -0,0 +1,59 @@
+package ru.caf82.lectures.lecture02;
+
+import com.sun.org.apache.xpath.internal.SourceTree;
+
+/**
+ * Created by ilysko on 24.08.17.
+ */
+public class OperatorsExample {
+ public static void main(String[] args) {
+ System.out.println("Arithmetical operators:");
+ int a = 10, b = 3, c = 2;
+ float g = 5.14f, f = 2.05f;
+ System.out.println("a + c - b = " + (a + c - b));
+ System.out.println("b * c = " + b * c);
+ System.out.println("a / b = " + a / b); // pay attention for this (integer division)
+ System.out.println("g / f = " + g / f);
+
+ System.out.println("\nUnary operators:");
+ int d = 4;
+ boolean e = true;
+ System.out.println("d++ = " + d++);
+ System.out.println("d = " + d);
+ System.out.println("++d = " + ++d);
+ System.out.println("(byte) d = " + Integer.toBinaryString(d));
+ System.out.println("(byte) ~d = " + Integer.toBinaryString(~d));
+ System.out.println("!e = " + !e);
+
+ System.out.println("\nRelational operators:");
+ double p = 5.5d, r = 2.7500000000000001d;
+ System.out.println("p / 2 == r = " + (p / 2 == r));
+for(int i=0;i<6;i++)
+
+ System.out.println("\nBitwise operators:");
+ // TODO разобраться с битовыми представлениями!
+ byte t = 0b1110, q = 0b0111;
+ byte y = -13;
+ System.out.println("t & q = " + Integer.toBinaryString(t & q));
+ System.out.println("t | q = " + Integer.toBinaryString(t | q));
+ System.out.println("t ^ q = " + Integer.toBinaryString(t ^ q));
+ System.out.println("y = " + String.format("%8s", Integer.toBinaryString(y & 0xFF)).replace(' ', '0'));
+ System.out.println("-y = " + String.format("%8s", Integer.toBinaryString(-y & 0xFF)).replace(' ', '0'));
+ System.out.println("y << 2 = " + (y << 2));
+ System.out.println("y >> 2 = " + (y >> 2));
+ System.out.println("y >>> 2 = " + (y >>> 2));
+ System.out.println("y << 2 = " + Integer.toBinaryString(y << 2));
+ System.out.println("y >> 2 = " + Integer.toBinaryString(y >> 2));
+ System.out.println("y >>> 2 = " + Integer.toBinaryString(y >>> 2));
+
+ System.out.println("\nLogical operators:");
+ boolean b1 = false, b2 = true;
+ System.out.println("b1 || b2 = " + (b1 || b2));
+ System.out.println("b1 && b2 = " + (b1 && b2));
+
+ System.out.println("\nTernary operators:");
+ boolean b3 = true;
+ System.out.println("Rolling " + (b3 ? "Stones" : "Trees"));
+ System.out.println("Paint It " + (!b3 ? "Red" : "Black"));
+ }
+}
diff --git a/src/ru/caf82/lectures/lecture02/PrimitiveTypes.java b/src/ru/caf82/lectures/lecture02/PrimitiveTypes.java
new file mode 100644
index 0000000..a5dcc37
--- /dev/null
+++ b/src/ru/caf82/lectures/lecture02/PrimitiveTypes.java
@@ -0,0 +1,43 @@
+package ru.caf82.lectures.lecture02;
+
+public class PrimitiveTypes {
+
+
+ public static void main(String[] args) {
+
+ //byte b = 216;
+ short s = 1123;
+ int i = 64536;
+ long l = 2147483648L;
+ int j = 10;
+
+ System.out.println(i);
+ //System.out.println(b);
+ System.out.println(s);
+ System.out.println(l);
+
+ System.out.println(i + 2147483647);
+ System.out.println(l + j);
+ System.out.println(j + l);
+
+ char a = 'a', c = 'c';
+ int b;
+ b = ((a + c) / 2);
+ System.out.println(b);
+ System.out.println((char) b);
+
+ System.out.println((char) b + i);
+ System.out.println(b+i);
+
+ double doubleOne, doubleTwo = 4.12;
+ doubleOne = 22.1 + doubleTwo;
+ float pi = 3.14f;
+ //float anotherPi = 3.14;
+ double doubleThree = 27;
+ double d = pi * doubleThree;
+
+ System.out.println(d);
+ System.out.println(doubleOne);
+ System.out.println(pi);
+ }
+}
diff --git a/src/ru/caf82/lectures/lecture02/StringProcessing.java b/src/ru/caf82/lectures/lecture02/StringProcessing.java
new file mode 100644
index 0000000..b51d9b5
--- /dev/null
+++ b/src/ru/caf82/lectures/lecture02/StringProcessing.java
@@ -0,0 +1,39 @@
+package ru.caf82.lectures.lecture02;
+
+public class StringProcessing {
+
+ public static void main(String[] args) {
+
+ //String Buffer examples
+ StringBuffer sb = new StringBuffer("Котэ");
+
+ System.out.println("Длина: " + sb.length());
+ System.out.println("Объем: " + sb.capacity());
+
+ sb.setCharAt(1, 'o');
+
+ System.out.println("Было Котэ, стало: " + sb.toString());
+
+ String str1 = "У кота ";
+ String str2 = " лапы";
+ int paws = 4;
+ StringBuffer sbNew = new StringBuffer(20);
+ sbNew.append(str1).append(paws).append(str2);
+
+ System.out.println(sbNew.toString());
+
+ sb.insert(0, "Люблю ");
+ System.out.println(sb.toString());
+
+ sb.reverse();
+ System.out.println(sb.toString());
+
+ //TODO delete, deleteCharAt, replace, substring write your own code
+
+
+
+ //TODO StringBuilder the same methods implementation
+
+ }
+
+}
diff --git a/src/ru/caf82/lectures/lecture02/WhileAndDoWhileExample.java b/src/ru/caf82/lectures/lecture02/WhileAndDoWhileExample.java
new file mode 100644
index 0000000..d3fbb84
--- /dev/null
+++ b/src/ru/caf82/lectures/lecture02/WhileAndDoWhileExample.java
@@ -0,0 +1,20 @@
+package ru.caf82.lectures.lecture02;
+
+/**
+ * Created by ilysko on 24.08.17.
+ */
+public class WhileAndDoWhileExample {
+ public static void main(String[] args) {
+ int i = 3;
+
+ while (i > 0) {
+ System.out.println(i--);
+ }
+
+ System.out.println("\n" + i + "\n");
+
+ do {
+ System.out.println(i--);
+ } while (i > 0);
+ }
+}
diff --git a/src/ru/caf82/lectures/lecture03/AbstractAnimal.java b/src/ru/caf82/lectures/lecture03/AbstractAnimal.java
new file mode 100644
index 0000000..3034cf2
--- /dev/null
+++ b/src/ru/caf82/lectures/lecture03/AbstractAnimal.java
@@ -0,0 +1,20 @@
+package ru.caf82.lectures.lecture03;
+
+/**
+ * Created by ilysko on 16.09.17.
+ */
+public abstract class AbstractAnimal {
+ final int legsAmount;
+ final String animalName;
+
+ public abstract void move();
+
+ public void sayYourName() {
+ System.out.println("My name is " + animalName);
+ }
+
+ protected AbstractAnimal(int legsAmount, String animalName) {
+ this.legsAmount = legsAmount;
+ this.animalName = animalName;
+ }
+}
diff --git a/src/ru/caf82/lectures/lecture03/CompositionExample.java b/src/ru/caf82/lectures/lecture03/CompositionExample.java
new file mode 100644
index 0000000..8ee40d5
--- /dev/null
+++ b/src/ru/caf82/lectures/lecture03/CompositionExample.java
@@ -0,0 +1,83 @@
+package ru.caf82.lectures.lecture03;
+
+import java.lang.reflect.Array;
+import java.util.Arrays;
+import java.util.function.DoublePredicate;
+
+/**
+ * Created by ilysko on 17.09.17.
+ */
+public class CompositionExample {
+ Cat cat = new Cat(); // в точке определения
+ Dog dog;
+ Crocodile crocodile;
+ Zoo zoo = new Zoo(new Animal[] {cat, dog, crocodile}); // с использованием инициализации экземпляров
+
+ CompositionExample(Dog dog) {
+ this.dog = dog; // в конструкторе
+ }
+
+ @Override
+ public String toString() {
+ if (crocodile == null) {
+ this.crocodile = new Crocodile(); // перед использованием объекта
+ }
+ return "CompositionExample{" +
+ "cat=" + cat +
+ ", dog=" + dog +
+ ", crocodile=" + crocodile +
+ ", zoo=" + zoo +
+ '}';
+ }
+
+ public static void main(String[] args) {
+ Dog dog = new Dog(true);
+ CompositionExample compositionExample = new CompositionExample(dog);
+
+ System.out.println(compositionExample.toString());
+
+ compositionExample.crocodile.eatMeat();
+ compositionExample.cat.sayMeow();
+ System.out.println(compositionExample.dog.isFriendly);
+ System.out.println(Arrays.toString(compositionExample.zoo.animals));
+ }
+}
+
+abstract class Animal {}
+
+class Cat extends Animal {
+ int legCount = 4;
+ void sayMeow() {
+ System.out.println("Meow");
+ }
+}
+
+class Dog extends Animal {
+ boolean isFriendly;
+
+ Dog(boolean isFriendly) {
+ this.isFriendly = isFriendly;
+ }
+}
+
+class Crocodile extends Animal {
+ void eatMeat() {
+ System.out.println("Delicious!");
+ }
+}
+
+class Zoo {
+ Animal[] animals;
+
+ Zoo(Animal[] animals) {
+ this.animals = animals;
+ }
+
+ void open() {
+ System.out.println("open");
+ }
+
+ void close() {
+ System.out.println("close");
+ }
+}
diff --git a/src/ru/caf82/lectures/lecture03/InheritanceExample.java b/src/ru/caf82/lectures/lecture03/InheritanceExample.java
new file mode 100644
index 0000000..c6b207a
--- /dev/null
+++ b/src/ru/caf82/lectures/lecture03/InheritanceExample.java
@@ -0,0 +1,39 @@
+package ru.caf82.lectures.lecture03;
+
+/**
+ * Created by ilysko on 17.09.17.
+ */
+public class InheritanceExample {
+ void tryToGetAnimalName(AbstractAnimal abstractAnimal) {
+ // нисходящее преобразование
+ abstractAnimal.sayYourName();
+
+ // нельзя, т.к. мы работаем с AbstractAnimal
+ //abstractAnimal.jump()
+ }
+
+ public static void main(String[] args) {
+ AbstractAnimal tiger = new Tiger();
+ tiger.move();
+ tiger.sayYourName();
+ System.out.println(tiger.legsAmount);
+ }
+}
+
+class Tiger extends AbstractAnimal {
+
+ protected Tiger() {
+ super(4, "Tiger");
+ }
+
+ @Override
+ public void move() {
+ System.out.println("run");
+ }
+
+ public void jump() {
+ System.out.println("jump");
+ }
+}
+
+
diff --git a/src/ru/caf82/lectures/lecture03/InterfaceExample.java b/src/ru/caf82/lectures/lecture03/InterfaceExample.java
new file mode 100644
index 0000000..4517fbe
--- /dev/null
+++ b/src/ru/caf82/lectures/lecture03/InterfaceExample.java
@@ -0,0 +1,17 @@
+package ru.caf82.lectures.lecture03;
+
+/**
+ * Created by ilysko on 17.09.17.
+ */
+public interface InterfaceExample {
+ default void printSomething() {
+ System.out.println("Something");
+ }
+
+ String returnName();
+
+ // можно не писать static final, это "по умолчанию"
+ static final int amount1 = 3;
+ int amount2 = 4;
+
+}
diff --git a/src/ru/caf82/lectures/lecture03/PassByValue.java b/src/ru/caf82/lectures/lecture03/PassByValue.java
new file mode 100644
index 0000000..1e07dae
--- /dev/null
+++ b/src/ru/caf82/lectures/lecture03/PassByValue.java
@@ -0,0 +1,51 @@
+package ru.caf82.lectures.lecture03;
+
+import java.util.Arrays;
+
+/**
+ * Created by ilysko on 17.09.17.
+ */
+public class PassByValue {
+ static void changePrimitiveInt(int a) {
+ a++;
+ }
+
+ static void changeReferenceInteger(Integer a) {
+ a++;
+ }
+
+ static void replaceReferenceInteger(Integer a) {
+ a = new Integer(42);
+ }
+
+ static void changeStringArray(String[] listOfBands) {
+ listOfBands[2] = "Guns N' Roses";
+ }
+
+ static void doSomethingBad(String[] listOfBands) {
+ listOfBands = new String[]{"Justin Bieber", "Тимати"};
+ }
+
+ public static void main(String[] args) {
+ int a1 = 2;
+
+ changePrimitiveInt(a1);
+ System.out.println("int primitive after changePrimitiveInt() : " + a1);
+
+ Integer a2 = new Integer(2);
+
+ changeReferenceInteger(a2);
+ System.out.println("Integer object after changeReferenceInteger() : " + a2);
+
+ replaceReferenceInteger(a2);
+ System.out.println("Integer object after replaceReferenceInteger() : " + a2);
+
+ String[] listOfBands = {"Led Zeppelin", "Pink Floyd", ""};
+
+ changeStringArray(listOfBands);
+ System.out.println("String[] after changeStringArray() : " + Arrays.toString(listOfBands));
+
+ doSomethingBad(listOfBands);
+ System.out.println("String[] after something bad : " + Arrays.toString(listOfBands));
+ }
+}
diff --git a/src/ru/caf82/lectures/lecture03/PolymorphysmExample.java b/src/ru/caf82/lectures/lecture03/PolymorphysmExample.java
new file mode 100644
index 0000000..0661fb8
--- /dev/null
+++ b/src/ru/caf82/lectures/lecture03/PolymorphysmExample.java
@@ -0,0 +1,34 @@
+package ru.caf82.lectures.lecture03;
+
+/**
+ * Created by ilysko on 17.09.17.
+ */
+public class PolymorphysmExample {
+ static void wash(Washable washable) {
+ System.out.println("cleaning " + washable.toString());
+ }
+
+ public static void main(String[] args) {
+ Kitty kitty = new Kitty();
+ Dishware dishware = new Dishware();
+
+ wash(kitty);
+ wash(dishware);
+ }
+}
+
+interface Washable{}
+
+class Kitty implements Washable {
+ @Override
+ public String toString() {
+ return "Kitty";
+ }
+}
+
+class Dishware implements Washable {
+ @Override
+ public String toString() {
+ return "Dishware";
+ }
+}
\ No newline at end of file
diff --git a/src/ru/caf82/lectures/lecture03/Season.java b/src/ru/caf82/lectures/lecture03/Season.java
new file mode 100644
index 0000000..bd6c131
--- /dev/null
+++ b/src/ru/caf82/lectures/lecture03/Season.java
@@ -0,0 +1,52 @@
+package ru.caf82.lectures.lecture03;
+
+import java.io.Serializable;
+import java.util.Arrays;
+
+/**
+ * Created by ilysko on 16.09.17.
+ */
+public enum Season {
+ WINTER ("Зима"),
+ SPRING ("Весна"),
+ SUMMER ("Лето"),
+ AUTUMN ("Осень");
+
+ private String russianName;
+ Season(String russianName) {
+ this.russianName = russianName;
+ }
+
+ public String getRussianName() {
+ return russianName;
+ }
+
+ public static void printMonthsOfSeason(Season season) {
+ switch (season) {
+ case WINTER:
+ System.out.println("December, January and February");
+ break;
+ case AUTUMN:
+ System.out.println("September, October and November");
+ break;
+ case SUMMER:
+ System.out.println("June, July and August");
+ break;
+ case SPRING:
+ System.out.println("April, March and May");
+ break;
+ }
+ }
+
+ public static void main(String[] args) {
+ Season season = Season.AUTUMN;
+ System.out.println(season);
+
+ // get all enum values
+ System.out.println(Arrays.toString(Season.values()));
+
+ printMonthsOfSeason(season);
+
+ System.out.println(season.getRussianName());
+ }
+}
diff --git a/src/ru/caf82/lectures/lecture04/DivideOnZero.java b/src/ru/caf82/lectures/lecture04/DivideOnZero.java
new file mode 100644
index 0000000..9511f32
--- /dev/null
+++ b/src/ru/caf82/lectures/lecture04/DivideOnZero.java
@@ -0,0 +1,54 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package ru.caf82.lectures.lecture04;
+
+import java.util.InputMismatchException;
+import java.util.Scanner;
+
+/**
+ *
+ * @author 1
+ */
+public class DivideOnZero {
+ public static void main(String[] args)
+ {
+ /*try
+ {
+ Scanner scanner = new Scanner(System.in);
+ int x = scanner.nextInt();
+ System.out.println(1000/x);
+ }
+ catch (InputMismatchException e)
+ {
+ System.out.println("Поймали ошибку со строкой! Е-еее!");
+ }
+
+ catch (ArithmeticException e)
+ {
+ System.out.println("Поймали ошибку с делением на 0! Е-еее");
+ }
+
+ finally
+ {
+ System.out.println("А тут мы всегда");
+ } */
+
+ System.out.println(f());
+ }
+
+ static int f()
+ {
+ try
+ {
+ return 3;
+ }
+
+ finally
+ {
+ return 2;
+ }
+ }
+}
diff --git a/src/ru/caf82/lectures/lecture04/ExceptionCatchingExample.java b/src/ru/caf82/lectures/lecture04/ExceptionCatchingExample.java
new file mode 100644
index 0000000..8456e7c
--- /dev/null
+++ b/src/ru/caf82/lectures/lecture04/ExceptionCatchingExample.java
@@ -0,0 +1,21 @@
+package ru.caf82.lectures.lecture04;
+
+
+public class ExceptionCatchingExample {
+
+ public static void main(String[] args) {
+ try {
+ System.out.println(6 / 0);
+ } catch (ArithmeticException ex) {
+ System.out.println("Ошибка! Ошибка!");
+ System.out.println(ex.toString());
+ }
+
+ try {
+ System.out.println(Long.parseLong("Mama"));
+ } catch (NumberFormatException ex) {
+ System.out.println("Снова косяк!");
+ System.out.println(ex.toString());
+ }
+ }
+}
diff --git a/src/ru/caf82/lectures/lecture04/ExceptionCatchingIhExample.java b/src/ru/caf82/lectures/lecture04/ExceptionCatchingIhExample.java
new file mode 100644
index 0000000..c4dfc32
--- /dev/null
+++ b/src/ru/caf82/lectures/lecture04/ExceptionCatchingIhExample.java
@@ -0,0 +1,24 @@
+package ru.caf82.lectures.lecture04;
+
+public class ExceptionCatchingIhExample {
+
+ public static void main(String[] args) {
+// try {
+// System.out.println(6 / 0);
+// } catch (Exception ex) {
+// System.out.println("Ошибка верхнего увроня");
+// } catch (ArithmeticException ex) {
+// System.out.println("Ошибка! Ошибка!");
+// System.out.println(ex.toString());
+// }
+
+ try {
+ System.out.println(Long.parseLong("Mama"));
+ } catch (NumberFormatException ex) {
+ System.out.println("Снова косяк!");
+ System.out.println(ex.toString());
+ } catch (Exception ex) {
+ System.out.println("Ошибка верхнего уровня");
+ }
+ }
+}
diff --git a/src/ru/caf82/lectures/lecture04/MyExceptionClassExample.java b/src/ru/caf82/lectures/lecture04/MyExceptionClassExample.java
new file mode 100644
index 0000000..b741e17
--- /dev/null
+++ b/src/ru/caf82/lectures/lecture04/MyExceptionClassExample.java
@@ -0,0 +1,52 @@
+package ru.caf82.lectures.lecture04;
+
+/**
+ * Created by ilysko on 24.09.17.
+ */
+public class MyExceptionClassExample extends TemplateForMyExceptionClass {
+ int amountOfSmth;
+
+ void someMethod() {
+ System.out.println(amountOfSmth);
+ }
+
+ void f() {
+ someMethod();
+ }
+
+ public MyExceptionClassExample() {
+ super();
+ }
+
+ public MyExceptionClassExample(Exception e) {
+ super(e);
+ }
+
+ public MyExceptionClassExample(int amountOfSmth) {
+ super();
+ this.amountOfSmth = amountOfSmth;
+ }
+
+ public MyExceptionClassExample(String messageFullOfAnger) {
+ super(messageFullOfAnger);
+ }
+
+ public static void main(String[] args) {
+ System.out.println("let's throw an exception!");
+// throw new MyExceptionClassExample("lol");
+ }
+}
+
+class TemplateForMyExceptionClass extends Exception {
+ TemplateForMyExceptionClass() {
+ super();
+ }
+
+ TemplateForMyExceptionClass(String message) {
+ super(message);
+ }
+
+ TemplateForMyExceptionClass(Exception e) {
+ super(e);
+ }
+}
diff --git a/src/ru/caf82/lectures/lecture04/StackTraceExample.java b/src/ru/caf82/lectures/lecture04/StackTraceExample.java
new file mode 100644
index 0000000..96b7f71
--- /dev/null
+++ b/src/ru/caf82/lectures/lecture04/StackTraceExample.java
@@ -0,0 +1,32 @@
+package ru.caf82.lectures.lecture04;
+
+/**
+ * Created by ilysko on 24.09.17.
+ */
+public class StackTraceExample {
+ static void f() {
+ try {
+ throw new Exception();
+ } catch (Exception e) {
+ for (StackTraceElement ste : e.getStackTrace()) {
+ System.out.println(ste.getMethodName());
+ }
+ }
+ }
+
+ static void g() {
+ f();
+ }
+
+ static void h() {
+ g();
+ }
+
+ public static void main(String[] args) {
+ f();
+ System.out.println("---------------");
+ g();
+ System.out.println("---------------");
+ h();
+ }
+}
diff --git a/src/ru/caf82/lectures/lecture04/ThrowExample.java b/src/ru/caf82/lectures/lecture04/ThrowExample.java
new file mode 100644
index 0000000..8c3a31a
--- /dev/null
+++ b/src/ru/caf82/lectures/lecture04/ThrowExample.java
@@ -0,0 +1,51 @@
+package ru.caf82.lectures.lecture04;
+
+public class ThrowExample {
+
+ public static int divide(int a, int b) throws ArithmeticException, NegException {
+ if (b == 0) {
+ throw new ArithmeticException("Ты че как лох-то, на нуль делить нельзя");
+ } else if( b < 0) {
+ throw new NegException("Мы решили, что на отрицательные числа делить нельзя");
+ }
+ return a / b;
+ }
+
+ public static void main(String[] args) {
+ try {
+ System.out.println(divide(5, 2));
+ System.out.println(divide(5, 0));
+ } catch (ArithmeticException ex){
+ System.out.println("Мы поймали ошибку!");
+ } catch (Exception ex) {
+ //
+ }
+ try {
+ System.out.println(divide(5, 2));
+ System.out.println(divide(5, -1));
+ } catch (NegException ex){
+ System.out.println("Мы поймали ошибку!");
+ } catch (Exception ex) {
+ //
+ }
+ try {
+ System.out.println(divide(5, -1));
+ System.out.println(divide(5, 0));
+ } catch (ArithmeticException ex){
+ System.out.println("Мы поймали ошибку!");
+ } catch (NegException ex) {
+ System.out.println("Отрицательное деление");
+ }
+
+ }
+
+
+ public static class NegException extends Exception {
+ NegException(){
+ super();
+ }
+ NegException(String message) {
+ super(message);
+ }
+ }
+}
diff --git a/src/ru/caf82/lectures/lecture04/WorkWithExceptions.java b/src/ru/caf82/lectures/lecture04/WorkWithExceptions.java
new file mode 100644
index 0000000..0791ab8
--- /dev/null
+++ b/src/ru/caf82/lectures/lecture04/WorkWithExceptions.java
@@ -0,0 +1,36 @@
+package ru.caf82.lectures.lecture04;
+
+/**
+ * Created by ilysko on 24.09.17.
+ */
+public class WorkWithExceptions {
+ void ignore() throws Exception {
+ throw new Exception();
+ }
+
+ void catchHere() {
+ try {
+ throw new Exception();
+ } catch (Exception e) {
+ System.out.println("Lol, i caught it just here!");
+ }
+ }
+
+ void throwAhead() {
+ try {
+ ignore();
+ } catch (Exception e) {
+ System.out.println("We didn't try to catch exception in ignore(). " +
+ "We did it here");
+ }
+ }
+
+ void createNewExceptionWhileWorkingWithOld() throws MyExceptionClassExample {
+ try {
+ ignore();
+ } catch (Exception e) {
+ System.out.println("do smth");
+ throw new MyExceptionClassExample(e);
+ }
+ }
+}
diff --git a/src/ru/caf82/lectures/lectureDB/HibernateUtil.java b/src/ru/caf82/lectures/lectureDB/HibernateUtil.java
new file mode 100644
index 0000000..f3a4508
--- /dev/null
+++ b/src/ru/caf82/lectures/lectureDB/HibernateUtil.java
@@ -0,0 +1,35 @@
+package ru.caf82.lectures.lectureDB;
+
+import org.hibernate.HibernateException;
+import org.hibernate.Metamodel;
+import org.hibernate.query.Query;
+import org.hibernate.Session;
+import org.hibernate.SessionFactory;
+import org.hibernate.cfg.Configuration;
+
+import javax.persistence.metamodel.EntityType;
+
+import java.util.Map;
+
+public class HibernateUtil {
+ private static final SessionFactory sessionFactory;
+
+ static {
+ try {
+ Configuration configuration = new Configuration();
+
+ sessionFactory = configuration.configure().buildSessionFactory();
+ } catch (Throwable ex) {
+ throw new ExceptionInInitializerError(ex);
+ }
+ }
+
+ public static Session getSession() throws HibernateException {
+ return sessionFactory.openSession();
+ }
+
+ public static void closeSessionFactory() {
+ sessionFactory.close();
+ }
+
+}
\ No newline at end of file
diff --git a/src/ru/caf82/lectures/lectureDB/Password.java b/src/ru/caf82/lectures/lectureDB/Password.java
new file mode 100644
index 0000000..fe0e9dd
--- /dev/null
+++ b/src/ru/caf82/lectures/lectureDB/Password.java
@@ -0,0 +1,60 @@
+package ru.caf82.lectures.lectureDB;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "passwords", schema = "homework", catalog = "")
+
+public class Password {
+
+@Id
+@GeneratedValue(strategy = GenerationType.IDENTITY)
+@Column
+private int id;
+
+
+ @Column(nullable = false)
+ private String password;
+
+ @OneToOne(cascade = CascadeType.ALL)
+ @JoinColumn(name = "user_id")
+ private User user;
+
+ public Password(String password, User user) {
+ this.password = password;
+ this.user = user;
+ }
+
+ @Override
+ public String toString() {
+ return "Пароль{" +
+ "id=" + id +
+ ", пароль='" + password + '\'' +
+ ", пользователь=" + user +
+ '}';
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public User getUser() {
+ return user;
+ }
+
+ public void setUser(User user) {
+ this.user = user;
+ }
+}
diff --git a/src/ru/caf82/lectures/lectureDB/User.java b/src/ru/caf82/lectures/lectureDB/User.java
new file mode 100644
index 0000000..aa2b543
--- /dev/null
+++ b/src/ru/caf82/lectures/lectureDB/User.java
@@ -0,0 +1,61 @@
+package ru.caf82.lectures.lectureDB;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "users", schema = "homework", catalog = "")
+
+public class User {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(nullable = false)
+ private int id;
+
+ @Column(nullable = false)
+ private String login;
+
+ @Column(nullable = false)
+ private int age;
+
+ public User(String login, int age) {
+ this.login = login;
+ this.age = age;
+ }
+
+ public User() {
+
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public String getLogin() {
+ return login;
+ }
+
+ public int getAge() {
+ return age;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public void setLogin(String login) {
+ this.login = login;
+ }
+
+ public void setAge(int age) {
+ this.age = age;
+ }
+
+ @Override
+ public String toString() {
+ return "Пользователь{" +
+ "логин='" + login + '\'' +
+ ", возраст=" + age +
+ '}';
+ }
+}
diff --git a/src/ru/caf82/lectures/lectureDB/UserManager.java b/src/ru/caf82/lectures/lectureDB/UserManager.java
new file mode 100644
index 0000000..78046ea
--- /dev/null
+++ b/src/ru/caf82/lectures/lectureDB/UserManager.java
@@ -0,0 +1,97 @@
+package ru.caf82.lectures.lectureDB;
+
+import org.hibernate.HibernateException;
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+
+
+
+public class UserManager {
+ public static void watchListOfUsers() {
+ Session session = HibernateUtil.getSession();
+ Transaction transaction = null;
+ try {
+ transaction = session.beginTransaction();
+ for (Object user : session.createQuery("from User").list()) {
+ System.out.println(user);
+ }
+ transaction.commit();
+ }
+ catch (HibernateException e) {
+ if (transaction != null) {
+ transaction.rollback();
+ }
+ }
+ finally {
+ HibernateUtil.closeSessionFactory();
+ }
+
+ }
+
+ public static void addUserWithPassword(String login,int age, String stringPassword) {
+ Session session = HibernateUtil.getSession();
+ Transaction transaction = null;
+ try {
+ transaction = session.beginTransaction();
+ User user = new User(login,age);
+ Password password = new Password(stringPassword,user);
+ session.save(user);
+ session.save(password);
+ transaction.commit();
+ }
+ catch (HibernateException ex) {
+ if (transaction != null) {
+ transaction.rollback();
+ }
+ }
+ finally {
+ HibernateUtil.closeSessionFactory();
+ }
+
+ }
+
+ public static void deleteUser(String login) {
+ Session session = HibernateUtil.getSession();
+ Transaction transaction = null;
+ try {
+ transaction = session.beginTransaction();
+ for (Object id : session.createQuery(" select id from User where login = :login ").setParameter("login",login).list()) {
+ Integer idInteger = (Integer) id;
+ session.createQuery("delete from User where id = :idInteger").setParameter("idInteger",idInteger).executeUpdate();
+ session.createQuery("delete from Password where id = :idInteger").setParameter("idInteger",idInteger).executeUpdate();
+ }
+ transaction.commit();
+ }
+
+ catch (HibernateException ex) {
+ if (transaction != null) {
+ transaction.rollback();
+ }
+ }
+ finally {
+ HibernateUtil.closeSessionFactory();
+ }
+ }
+
+ public static boolean userExist(String login) {
+ Session session = HibernateUtil.getSession();
+ Transaction transaction = null;
+ boolean result = false;
+ try {
+ transaction = session.beginTransaction();
+ result = session.createQuery("from User where login = :login").setParameter("login",login).list().size() == 0;
+ transaction.commit();
+ }
+ catch (HibernateException ex) {
+ if (transaction != null) {
+ transaction.rollback();
+ }
+ result = false;
+ }
+ finally {
+ HibernateUtil.closeSessionFactory();
+ }
+ return result;
+ }
+
+}
diff --git a/src/ru/caf82/lectures/lectureSwing/FrameExecutor.java b/src/ru/caf82/lectures/lectureSwing/FrameExecutor.java
new file mode 100644
index 0000000..25e1015
--- /dev/null
+++ b/src/ru/caf82/lectures/lectureSwing/FrameExecutor.java
@@ -0,0 +1,15 @@
+package ru.caf82.lectures.lectureSwing;
+
+import javax.swing.*;
+
+public class FrameExecutor {
+ private static JFrame frame = new JFrame("SwingTest");
+
+ public static void run(JPanel panel) {
+ frame.setSize(500,500);
+ frame.setVisible(true);
+ frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ frame.setContentPane(panel);
+ frame.setLocationRelativeTo(null);
+ }
+}
diff --git a/src/ru/caf82/lectures/lectureSwing/SwingManager.java b/src/ru/caf82/lectures/lectureSwing/SwingManager.java
new file mode 100644
index 0000000..ae1dc91
--- /dev/null
+++ b/src/ru/caf82/lectures/lectureSwing/SwingManager.java
@@ -0,0 +1,10 @@
+package ru.caf82.lectures.lectureSwing;
+
+import ru.caf82.lectures.lectureSwing.tests.*;
+
+
+public class SwingManager {
+ public static void main(String[] args) {
+ FrameExecutor.run(new ActionListenerTest());
+ }
+}
diff --git a/src/ru/caf82/lectures/lectureSwing/tests/ActionListenerTest.java b/src/ru/caf82/lectures/lectureSwing/tests/ActionListenerTest.java
new file mode 100644
index 0000000..cc6531d
--- /dev/null
+++ b/src/ru/caf82/lectures/lectureSwing/tests/ActionListenerTest.java
@@ -0,0 +1,37 @@
+package ru.caf82.lectures.lectureSwing.tests;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+public class ActionListenerTest extends JPanel {
+ private JButton button;
+ private JLabel label;
+ public ActionListenerTest() {
+ add(createButton());
+ add(createLabel());
+ }
+
+ private JButton createButton() {
+ setLayout(new GridLayout(1,1));
+ button = new JButton("Нажми меня");
+ button.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ if (label.getText().equals("Я метка")) {
+ label.setText("Спасибо, что нажали!!!");
+ }
+ else {
+ label.setText("Я метка");
+ }
+ }
+ });
+ return button;
+ }
+
+ private JLabel createLabel() {
+ label = new JLabel("Я метка");
+ return label;
+ }
+}
diff --git a/src/ru/caf82/lectures/lectureSwing/tests/ChangeListenerTest.java b/src/ru/caf82/lectures/lectureSwing/tests/ChangeListenerTest.java
new file mode 100644
index 0000000..5946e4a
--- /dev/null
+++ b/src/ru/caf82/lectures/lectureSwing/tests/ChangeListenerTest.java
@@ -0,0 +1,33 @@
+package ru.caf82.lectures.lectureSwing.tests;
+
+import javax.swing.*;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+import java.awt.*;
+
+public class ChangeListenerTest extends JPanel {
+ private JLabel label;
+ private JButton button;
+
+ public ChangeListenerTest() {
+ setLayout(new GridLayout(1,1));
+ add(createLabel());
+ add(createButton());
+ }
+
+ private JLabel createLabel() {
+ label = new JLabel("Ничего не происходит");
+ return label;
+ }
+
+ private JButton createButton() {
+ button = new JButton("Кнопка");
+ button.addChangeListener(new ChangeListener() {
+ @Override
+ public void stateChanged(ChangeEvent e) {
+ label.setText("Изменилось состояние кнопки");
+ }
+ });
+ return button;
+ }
+}
diff --git a/src/ru/caf82/lectures/lectureSwing/tests/ItemListenerTest.java b/src/ru/caf82/lectures/lectureSwing/tests/ItemListenerTest.java
new file mode 100644
index 0000000..df820ba
--- /dev/null
+++ b/src/ru/caf82/lectures/lectureSwing/tests/ItemListenerTest.java
@@ -0,0 +1,39 @@
+package ru.caf82.lectures.lectureSwing.tests;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+
+public class ItemListenerTest extends JPanel {
+ private JLabel label;
+ private JCheckBox checkBox;
+
+ public ItemListenerTest() {
+ setLayout(new GridLayout(1,1));
+ add(createLabel());
+ add(createCheckBox());
+ }
+
+ private JLabel createLabel() {
+ label = new JLabel("Поставь галочку!!!");
+ return label;
+ }
+
+ private JCheckBox createCheckBox() {
+ checkBox = new JCheckBox("Я галочка");
+ checkBox.addItemListener(new ItemListener() {
+ @Override
+ public void itemStateChanged(ItemEvent e) {
+ if (checkBox.isSelected()) {
+ label.setText("УРААААА");
+ }
+
+ else {
+ label.setText("Еще раз поставь!!!");
+ }
+ }
+ });
+ return checkBox;
+ }
+}
diff --git a/src/ru/caf82/lectures/lectureSwing/tests/MouseListenerTest.java b/src/ru/caf82/lectures/lectureSwing/tests/MouseListenerTest.java
new file mode 100644
index 0000000..f5f19a4
--- /dev/null
+++ b/src/ru/caf82/lectures/lectureSwing/tests/MouseListenerTest.java
@@ -0,0 +1,60 @@
+package ru.caf82.lectures.lectureSwing.tests;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+
+public class MouseListenerTest extends JPanel {
+ private JLabel label1;
+ private JLabel label2;
+ private JButton button;
+
+ public MouseListenerTest() {
+ setLayout(new GridLayout(1,2));
+ addMouseListener(new MouseAdapter() {
+ @Override
+ public void mouseEntered(MouseEvent e) {
+ String word = "Привет";
+ label1.setText(word);
+ }
+
+ @Override
+ public void mouseExited(MouseEvent e) {
+ label1.setText("");
+ }
+
+ });
+ add(createLabel1());
+ add(createLabel2());
+ add(createButton());
+
+ }
+
+ private JLabel createLabel1() {
+ label1 = new JLabel();
+ return label1;
+ }
+
+ private JLabel createLabel2() {
+ label2 = new JLabel();
+ return label2;
+ }
+
+ private JButton createButton() {
+ button = new JButton("Click me!");
+ button.addMouseListener(new MouseAdapter() {
+ @Override
+ public void mousePressed(MouseEvent e) {
+ label2.setText("LOL))00)))))))000))");
+ }
+
+ @Override
+ public void mouseReleased(MouseEvent e) {
+
+ label2.setText("");
+ }
+ });
+ return button;
+ }
+}
diff --git a/src/ru/caf82/result/MyOwnArrayList.java b/src/ru/caf82/result/MyOwnArrayList.java
new file mode 100644
index 0000000..60078ae
--- /dev/null
+++ b/src/ru/caf82/result/MyOwnArrayList.java
@@ -0,0 +1,212 @@
+package ru.caf82.result;
+
+import java.util.Arrays;
+import java.util.Iterator;
+
+public class MyOwnArrayList implements Iterable {
+ private E[] arrayOfData; //Статический массив элементов
+ private int size; // количество элементов в массиве
+ private final static int DEFAULT_CAPACITY = 10; // Длина массив по умолчанию, при вызове конструктора без аргументов
+
+ /**
+ * Конструктор без аргументов
+ */
+ public MyOwnArrayList() {
+ arrayOfData = (E[]) new Object[DEFAULT_CAPACITY];
+ }
+
+ /**
+ * Конструктор
+ * Создаем массив с указанной емкостью
+ * @param initialCapacity
+ */
+ public MyOwnArrayList(int initialCapacity) {
+ if (initialCapacity < 0) {
+ throw new IllegalArgumentException();
+ }
+ arrayOfData = (E[]) new Object[initialCapacity];
+ }
+
+ /**
+ * Устанавливает минимальную длину
+ * @param minCapacity
+ * массива
+ * @see MyOwnArrayList#arrayOfData, если заданный параметр больше текущей длины массива
+ */
+ public void ensureCapacity(int minCapacity) {
+ if (arrayOfData.length < minCapacity) {
+ arrayOfData = Arrays.copyOf(arrayOfData, minCapacity);
+ }
+ }
+
+ /**
+ * Метод выясняет, содержит ли массив элемент
+ * @param element
+ * @return true, если элемент содержится в массиве
+ * иначе false
+ */
+ public boolean contains(E element) {
+ return indexOf(element) != -1 ? true : false; //Упрощенная конструкция if-else
+ }
+
+ /**
+ * Метод возвращает индекс аргумента в массиве
+ * @param element
+ * @return Индекс элемента, если элемента нету в массиве, то return -1
+ */
+ public int indexOf(E element) {
+
+ for (int i = 0; i < size; i++) {
+ if (arrayOfData[i].equals(element)) {
+ return i;
+ }
+ }
+ return -1;
+ }
+
+ /**
+ * Добавляет переданный элемент на место, заданное индексом
+ * @param index место, куда вставим элемент
+ * @param element сам элемент
+ */
+ public void add(int index, E element){
+ if (index < 0 || index > size) {
+ throw new IndexOutOfBoundsException();
+ }
+ E[] copyArrayBeforeIndex = Arrays.copyOfRange(arrayOfData,0,index);
+ E[] copyArrayAfterIndex = Arrays.copyOfRange(arrayOfData,index,size);
+ E[] newArrayOfData = (E[]) new Object[++size];
+
+ for (int i = 0; i < copyArrayBeforeIndex.length; i++) {
+ newArrayOfData[i] = copyArrayBeforeIndex[i];
+ }
+
+ newArrayOfData[copyArrayBeforeIndex.length] = element;
+
+ for (int i = 0; i < copyArrayAfterIndex.length; i++) {
+ newArrayOfData[i + copyArrayBeforeIndex.length + 1] = copyArrayAfterIndex[i];
+ }
+ arrayOfData = newArrayOfData;
+ }
+
+ /**
+ * Метод добавления элемента в конец массива
+ * @param element сам элемент
+ * @return true
+ */
+ public boolean add(E element) {
+ add(size,element);
+ return true;
+ }
+
+ /**
+ *
+ * @return количество элементов в массиве
+ */
+ public int size() {
+ return size;
+ }
+
+ /**
+ * Возвращаем элемента из массива по индексу
+ * @param index Индекс, по которому возвращаем элемент
+ * @return Элемент
+ */
+ public E get(int index) {
+ if (index < 0 || index >= size) {
+ throw new IndexOutOfBoundsException();
+ }
+ return arrayOfData[index];
+ }
+
+ /**
+ * Меняем значение элемента по заданному индексу
+ * @param index Индекс, на месте которого меняем значение элемента
+ * @param element Хотим установить на заданный индекс
+ * @return Этот же элемент
+ */
+ public E set(int index, E element) {
+ if (index < 0 || index >= size) {
+ throw new IndexOutOfBoundsException();
+ }
+ arrayOfData[index] = element;
+ return element;
+ }
+
+ /**
+ * Полностью очищает массив
+ */
+ public void clear() {
+ arrayOfData = (E[]) new Object[DEFAULT_CAPACITY];
+ }
+
+ /**
+ * Удаляет элемент из массива по заданному индексу
+ * Элементы, справа стоящие от удаляемого элемента, сдвигаем влево
+ * @param index По которому мы удаляим элемент
+ * @return Элемент, который удалили
+ */
+ public E remove(int index) {
+ if (index < 0 || index >= size) {
+ throw new IndexOutOfBoundsException();
+ }
+ E element = arrayOfData[index];
+ E[] copyArrayBeforeIndex = Arrays.copyOfRange(arrayOfData,0,index);
+ E[] copyArrayAfterIndex = Arrays.copyOfRange(arrayOfData,index + 1,size);
+ E[] newArrayOfData = (E[]) new Object[--size];
+
+ for (int i = 0; i < copyArrayBeforeIndex.length; i++) {
+ newArrayOfData[i] = copyArrayBeforeIndex[i];
+ }
+ for (int i = 0; i < copyArrayAfterIndex.length; i++) {
+ newArrayOfData[i + copyArrayBeforeIndex.length] = copyArrayAfterIndex[i];
+ }
+ arrayOfData = newArrayOfData;
+ return element;
+ }
+
+ /**
+ * Удаляем из массива заданный элемент
+ * @param element Его удаляем
+ * @return true, если массив изменился, иначе false
+ */
+ public boolean remove(E element) {
+ int index = indexOf(element);
+ if (index != -1) {
+ remove(index);
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * @return Строковое представление нашего динамического массива в формате [elem1, elem2,...,elemN]
+ */
+ public String toString() {
+ StringBuilder stringBuilder = new StringBuilder("[");
+ for (int i = 0; i < size; i++) {
+ stringBuilder.append(arrayOfData[i]).append(",").append(" ");
+ }
+ return stringBuilder.delete(stringBuilder.lastIndexOf(", "),stringBuilder.length()).append("]").toString();
+ }
+
+ @Override
+ public Iterator iterator()
+ {
+ return new Iterator() {
+ int index = 0;
+
+ @Override
+ public boolean hasNext() {
+ return index < size;
+ }
+
+ @Override
+ public E next() {
+
+ return arrayOfData[index++];
+ }
+ };
+ }
+
+}
diff --git a/src/ru/caf82/result/MyOwnLinkedList.java b/src/ru/caf82/result/MyOwnLinkedList.java
new file mode 100644
index 0000000..689ad7a
--- /dev/null
+++ b/src/ru/caf82/result/MyOwnLinkedList.java
@@ -0,0 +1,290 @@
+package ru.caf82.result;
+
+import java.util.Collection;
+import java.util.Iterator;
+
+
+public class MyOwnLinkedList implements Iterable {
+ private Node lastNode; // последний элемент списка
+ private Node firstNode; // последний элемент списка
+ private int size; // количество элементов списка
+
+ /**
+ * Конструктор по умолчанию
+ */
+ public MyOwnLinkedList() {
+ }
+
+ /**
+ * Создаем список с последующем добавлением заданной коллекции
+ * @param c коллекцию, которую добавим в только что созданный список
+ */
+ public MyOwnLinkedList(Collection extends E> c) {
+ this(); // Вызываем конструктор по умоланию, расположенный выше
+ addAll(c); }
+
+ /**
+ * Добавляем заданный элемент в конец списка
+ * @param element
+ * @return true
+ */
+ public boolean add (E element) {
+ add(size, element);
+ return true;
+ }
+
+ /**
+ * Возвращает элемент, стоящий в заданной позиции
+ * Вспомогательный метод
+ * @param index
+ * @return элемент
+ */
+ private Node node(int index) {
+ Node node = firstNode;
+ if (index != 0) {
+ for (int i = 1; i <= index; i++) {
+ node = node.next;
+ }
+ }
+ return node;
+ }
+
+ /**
+ * Добавляем заданный элемент в заданную позицию списка
+ * @param index позиция, в которую поставим заданный элемент
+ * @param element
+ */
+ public void add(int index, E element) {
+ if (index < 0 || index > size) {
+ throw new IndexOutOfBoundsException();
+ }
+ Node node = new Node<>(element,null);
+ if (index == 0) {
+ node.next = firstNode;
+ firstNode = node;
+ if (lastNode == null) {
+ lastNode = node;
+ }
+ }
+ else {
+ Node prevNode = node(index - 1);
+ Node nextNode = prevNode.next;
+ prevNode.next = node;
+ node.next = nextNode;
+ if (nextNode == null) {
+ lastNode = node;
+ }
+ }
+ size++;
+ }
+
+ /**
+ * Метод проверяет,содержит ли список заданный элемент
+ * @param element
+ * @return true, если заданный элемент есть в списке, иначе false
+ */
+ public boolean contains(E element) {
+ return indexOf(element) != -1 ? true : false;
+ }
+
+ /**
+ * Удаляет элемент из списка по заданной позиции,
+ * элементы, стоящие справа от удаляемого элемента, сдвигаются вправо
+ * @param index Позиция, из которой удаляем элемент
+ * @return сам элемент
+ */
+ public E remove(int index) {
+ if (index < 0 || index >= size) {
+ throw new IndexOutOfBoundsException();
+ }
+ Node node = node(index);
+ Node nextNode = node.next;
+ node.next = null;
+ if (index == 0) {
+ firstNode = nextNode;
+ if (nextNode == null) {
+ lastNode = null;
+ }
+ }
+ else
+ {
+ Node prevNode = node(index - 1);
+ prevNode.next = nextNode;
+ if (nextNode == null) {
+ lastNode = prevNode;
+ }
+ }
+ size--;
+ return node.data;
+ }
+
+ /**
+ * Возвращает индекс первого вхождения заданного элемента
+ * @param element
+ * @return позицию первого вхождения
+ */
+ public int indexOf(E element) {
+ int count = -1;
+ for (Node node = firstNode; node != null; node = node.next) {
+ count++;
+ if (node.data.equals(element)) {
+ return count;
+ }
+ }
+ return -1;
+ }
+
+ /**
+ * Удаляем заданный элемент из списка
+ * @param element заданный элемент
+ * @return true, если список изменился, иначе false
+ */
+ public boolean remove(E element) {
+ int index = indexOf(element);
+ if (index != -1) {
+ remove(index);
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Устанавливаем новое значение элемента в заданной позиции
+ * @param index Индекс, в котором устанавливаем новоен значение элемента за место старого
+ * @param element Элемент,которой хотим установить
+ * @return Новый элемент
+ */
+ public E set(int index, E element) {
+ node(index).data = element;
+ return element;
+ }
+
+ /**
+ * Извлекаем, но не удаляем голову из списка
+ * @return голову списка
+ */
+ public E peek() {
+ if (isEmpty()) {
+ return null;
+ }
+ return firstNode.data;
+ }
+
+ /**
+ * Добавляем все элементы заданной коллекции в конец списка
+ * @param c коллекция
+ * @return true
+ */
+ public boolean addAll(Collection extends E> c) {
+ return addAll(size,c);
+ }
+
+ /**
+ * Добавляем все элементы заданной колекции в заданную позицию
+ * @param index Позиция, в которую добавим ПЕРВЫЙ элемент из коллекции
+ * Следующие элементы добавляем по порядку после ПЕРВОГО
+ * @param c Коллекция
+ * @return true
+ */
+ public boolean addAll(int index, Collection extends E> c) {
+ if (c == null) {
+ throw new NullPointerException();
+ }
+ if (index < 0 || index > size) {
+ throw new IndexOutOfBoundsException();
+ }
+ int count = 0;
+ Object[] arrayFromC = c.toArray();
+ for (Object element : arrayFromC) {
+ add(index + count, (E) element);
+ count++;
+ }
+ return true;
+ }
+
+ /**
+ * Извлекаем и удаляем ПЕРВЫЙ элемент (голову) списка
+ * @return голову списка
+ */
+ public E poll() {
+ if (isEmpty()) {
+ return null;
+ }
+ return remove(0);
+ }
+
+ /**
+ * Проверяем пустой ли список
+ * @return true, если пустой
+ * иначе false
+ */
+ public boolean isEmpty() {
+ return size == 0;
+ }
+
+ /**
+ * @return количество элементов списка
+ */
+ public int size() {
+ return size;
+ }
+
+ /**
+ * Возвращаем элемент из заданной позиции
+ * @param index заданная позиция
+ * @return Элемент из заданной позиции
+ */
+ public E get(int index) {
+ if (index < 0 || index >= size) {
+ throw new IndexOutOfBoundsException();
+ }
+ return node(index).data;
+ }
+
+ /**
+ * @return Строковое представление списка в формате [elem1, elem2,...,elemN]
+ */
+ @Override
+ public String toString() {
+ StringBuilder stringBuilder = new StringBuilder("[");
+ for (Node node = firstNode; node !=null; node = node.next) {
+ stringBuilder.append(node.data).append(",").append(" ");
+ }
+ return stringBuilder.delete(stringBuilder.lastIndexOf(", "),stringBuilder.length()).append("]").toString();
+ }
+
+ @Override
+ public Iterator iterator() {
+ return new Iterator() {
+ int index = 0;
+ @Override
+ public boolean hasNext() {
+ return index < size;
+ }
+
+ @Override
+ public E next() {
+ return node(index++).data;
+ }
+ };
+
+
+ }
+ public class Node {
+ private E data; //Содержимое элемента
+ private Node next; // Ссылка на следующий элемент
+
+ public Node(E data, Node next) {
+ this.data = data;
+ this.next = next;
+ }
+
+ public String toString() {
+ E nextData = null;
+ if (next != null) {
+ nextData = next.data;
+ }
+ return "This: " + data + "\n" + "Next: " + nextData;
+ }
+ }
+}
diff --git a/src/ru/caf82/result/exceptions/EmptyArrayException.java b/src/ru/caf82/result/exceptions/EmptyArrayException.java
new file mode 100644
index 0000000..e48da03
--- /dev/null
+++ b/src/ru/caf82/result/exceptions/EmptyArrayException.java
@@ -0,0 +1,33 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package ru.caf82.result.exceptions;
+
+/**
+ *
+ * @author 1
+ */
+public class EmptyArrayException extends Exception {
+
+ private String message;
+ private Throwable cause;
+
+ public EmptyArrayException () {
+
+ }
+
+ public EmptyArrayException (String message) {
+ this.message = message;
+ }
+
+ public EmptyArrayException (Throwable cause) {
+ this.cause = cause;
+ }
+
+ public EmptyArrayException (String message, Throwable cause) {
+ this.message = message;
+ this.cause = cause;
+ }
+}
diff --git a/src/ru/caf82/result/exceptions/InconveninentShapeException.java b/src/ru/caf82/result/exceptions/InconveninentShapeException.java
new file mode 100644
index 0000000..4c0930d
--- /dev/null
+++ b/src/ru/caf82/result/exceptions/InconveninentShapeException.java
@@ -0,0 +1,32 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package ru.caf82.result.exceptions;
+
+/**
+ *
+ * @author 1
+ */
+public class InconveninentShapeException extends Exception{
+
+ private String message;
+ private Throwable cause;
+ public InconveninentShapeException () {
+
+ }
+
+ public InconveninentShapeException (String message) {
+ this.message = message;
+ }
+
+ public InconveninentShapeException (Throwable cause) {
+ this.cause = cause;
+ }
+
+ public InconveninentShapeException (String message, Throwable cause) {
+ this.message = message;
+ this.cause = cause;
+ }
+}
diff --git a/src/ru/caf82/result/exceptions/ModelNotFittedException.java b/src/ru/caf82/result/exceptions/ModelNotFittedException.java
new file mode 100644
index 0000000..a7a3792
--- /dev/null
+++ b/src/ru/caf82/result/exceptions/ModelNotFittedException.java
@@ -0,0 +1,16 @@
+package ru.caf82.result.exceptions;
+
+public class ModelNotFittedException extends Exception {
+ ModelNotFittedException() {
+ super();
+ }
+ ModelNotFittedException(String message) {
+ super(message);
+ }
+ ModelNotFittedException(Throwable cause) {
+ super(cause);
+ }
+ ModelNotFittedException(Throwable cause, String message) {
+ super(message);
+ }
+}
diff --git a/src/ru/caf82/result/machinelearning/models/AbstractModel.java b/src/ru/caf82/result/machinelearning/models/AbstractModel.java
new file mode 100644
index 0000000..9cae8f8
--- /dev/null
+++ b/src/ru/caf82/result/machinelearning/models/AbstractModel.java
@@ -0,0 +1,16 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package ru.caf82.result.machinelearning.models;
+
+import java.io.Serializable;
+
+/**
+ *
+ * @author 1
+ */
+public abstract class AbstractModel implements Serializable {
+
+}
diff --git a/src/ru/caf82/result/machinelearning/models/Boosting.java b/src/ru/caf82/result/machinelearning/models/Boosting.java
new file mode 100644
index 0000000..bec9c13
--- /dev/null
+++ b/src/ru/caf82/result/machinelearning/models/Boosting.java
@@ -0,0 +1,13 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package ru.caf82.result.machinelearning.models;
+
+/**
+ *
+ * @author 1
+ */
+public class Boosting extends AbstractModel {
+}
diff --git a/src/ru/caf82/result/machinelearning/models/KNeighbourhood.java b/src/ru/caf82/result/machinelearning/models/KNeighbourhood.java
new file mode 100644
index 0000000..7f52e4e
--- /dev/null
+++ b/src/ru/caf82/result/machinelearning/models/KNeighbourhood.java
@@ -0,0 +1,14 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package ru.caf82.result.machinelearning.models;
+
+/**
+ *
+ * @author 1
+ */
+public abstract class KNeighbourhood {
+
+}
diff --git a/src/ru/caf82/result/machinelearning/models/LinearKernel.java b/src/ru/caf82/result/machinelearning/models/LinearKernel.java
new file mode 100644
index 0000000..acf2706
--- /dev/null
+++ b/src/ru/caf82/result/machinelearning/models/LinearKernel.java
@@ -0,0 +1,14 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package ru.caf82.result.machinelearning.models;
+
+/**
+ *
+ * @author 1
+ */
+public class LinearKernel extends KNeighbourhood{
+
+}
diff --git a/src/ru/caf82/result/machinelearning/models/NaiveBayes.java b/src/ru/caf82/result/machinelearning/models/NaiveBayes.java
new file mode 100644
index 0000000..3688e4e
--- /dev/null
+++ b/src/ru/caf82/result/machinelearning/models/NaiveBayes.java
@@ -0,0 +1,110 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package ru.caf82.result.machinelearning.models;
+
+import ru.caf82.result.exceptions.InconveninentShapeException;
+import ru.caf82.result.exceptions.ModelNotFittedException;
+import ru.caf82.result.machinelearning.preprocessing.MlModel;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ *
+ * @author 1
+ */
+public class NaiveBayes implements MlModel {
+
+ private float alpha;
+ private double[][] weights;
+ private boolean fitted;
+ private boolean parallel;
+ public NaiveBayes(float alpha, boolean parallel) {
+ //Миша сказал забить
+ }
+ public MlModel train(double[][] X, int[] y) throws InconveninentShapeException {
+ //считаем у=0 и y=1
+ if (X.length != y.length)
+ throw new InconveninentShapeException();
+ double yZer = 0, yOne = 0;
+ for (int i=0; i> X, List y) throws InconveninentShapeException {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+}
diff --git a/src/ru/caf82/result/machinelearning/models/NormalKernel.java b/src/ru/caf82/result/machinelearning/models/NormalKernel.java
new file mode 100644
index 0000000..84b6f88
--- /dev/null
+++ b/src/ru/caf82/result/machinelearning/models/NormalKernel.java
@@ -0,0 +1,14 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package ru.caf82.result.machinelearning.models;
+
+/**
+ *
+ * @author 1
+ */
+public class NormalKernel extends KNeighbourhood{
+
+}
diff --git a/src/ru/caf82/result/machinelearning/preprocessing/CountVectorizer.java b/src/ru/caf82/result/machinelearning/preprocessing/CountVectorizer.java
new file mode 100644
index 0000000..3220855
--- /dev/null
+++ b/src/ru/caf82/result/machinelearning/preprocessing/CountVectorizer.java
@@ -0,0 +1,116 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package ru.caf82.result.machinelearning.preprocessing;
+
+import java.util.*;
+
+/**
+ *
+ * @author 1
+ */
+public class CountVectorizer implements Transformer{
+private final Set setWordsFromAllTexts = new HashSet<>();
+private final List textClasses = new ArrayList<>();
+private final List listOfTexts = new ArrayList<>();
+private static List defaultStopWordsList = new ArrayList(
+ Arrays.asList(new String[]{
+ "а","е","и","ж","м","о","на","не","ни","об","но","он","мне","мои","мож","она","они","оно",
+ "мной","много","многочисленное","многочисленная","многочисленные","многочисленный",
+ "мною","мой","мог","могут","можно","может","можно","мор","моя","моё","мочь","над","нее",
+ "оба","нам","нем","нами","ними","мимо","немного","одной","одного","менее","однажды","однако",
+ "меня","нему","меньше","ней","наверху","него","ниже","мало","надо","один","одиннадцать","одиннадцатый",
+ "назад","наиболее","недавно","миллионов","недалеко","между","низко","меля","нельзя","нибудь",
+ "непрерывно","наконец","никогда","никуда","нас","наш","нет","нею","неё","них","мира","наша",
+ "наше","наши","ничего","начала","нередко","несколько","обычно","опять","около","мы","ну","нх","от","отовсюду",
+ "особенно","нужно","очень","отсюда","в","во","вон","вниз","внизу","вокруг","вот","восемнадцать",
+ "восемнадцатый","восемь","восьмой","вверх","вам","вами","важное","важная","важные","важный","вдали","везде",
+ "ведь","вас","ваш","ваша","ваше","ваши","впрочем","весь","вдруг","вы","все","второй","всем","всеми","времени","время",
+ "всему","всего","всегда","всех","всею","всю","вся","всё","всюду","г","год","говорил","говорит","года","году","где",
+ "да","ее","за","из","ли","же","им","до","по","ими","под","иногда","довольно","именно","долго","позже",
+ "более","должно","пожалуйста","значит","иметь","больше","пока","ему","имя","пор","пора","потом","потому","после",
+ "почему","почти","посреди","ей","два","две","двенадцать","двенадцатый","двадцать","двадцатый",
+ "двух","его","дел","или","без","день","занят","занята","занято","заняты","действительно","давно",
+ "девятнадцать","девятнадцатый","девять","девятый","даже","алло","жизнь","далеко","близко","здесь","дальше","для",
+ "лет","зато","даром","первый","перед","затем","зачем","лишь","десять","десятый","ею","её","их","бы","еще","при",
+ "был","про","процентов","против","просто","бывает","бывь","если","люди","была","были","было","будем","будет","будете","будешь",
+ "прекрасно","буду","будь","будто","будут","ещё","пятнадцать","пятнадцатый","друго","другое","другой","другие","другая","других","есть","пять",
+ "быть","лучше","пятый","к","ком","конечно","кому","кого","когда","которой","которого","которая","которые","который","которых","кем",
+ "каждое","каждая","каждые","каждый","кажется","как","какой","какая","кто","кроме","куда","кругом","с","т","у","я",
+ "та","те","уж","со","то","том","снова","тому","совсем","того","тогда","тоже","собой","тобой","собою","тобою",
+ "сначала","только","уметь","тот","тою","хорошо","хотеть","хочешь","хоть","хотя","свое","свои","твой","своей","своего","своих",
+ "свою","твоя","твоё","раз","уже","сам","там","тем","чем","сама","сами","теми","само","рано","самом","самому",
+ "самой","самого","семнадцать","семнадцатый","самим","самими","самих","саму",
+ "семь","чему","раньше","сейчас","чего","сегодня","себе","тебе","сеаой","человек","разве","теперь","себя","тебя","седьмой","спасибо",
+ "слишком","так","такое","такой","такие","также","такая","сих","тех","чаще","четвертый","через","часто","шестой","шестнадцать","шестнадцатый",
+ "шесть","четыре","четырнадцать","четырнадцатый","сколько","сказал","сказала","сказать",
+ "ту","ты","три","эта","эти","что","это","чтоб","этом","этому","этой","этого","чтобы","этот","стал","туда",
+ "этим","этими","рядом","тринадцать","тринадцатый","этих","третий","тут","эту","суть","чуть","тысяч"
+ })
+ );
+
+
+ /**
+ * Метод извлекающий слова из переданного в метод текста.
+ * Не учитываются слова поля из
+ * @see CountVectorizer#defaultStopWordsList
+ * Используется класс
+ * @see PorterStemmer для стемминга
+ * @param text Текст, из которого извлекаются слова
+ * @return Список слов
+ */
+ private static List preprocess(String text) {
+ text = text.toLowerCase().replaceAll("[^а-я -]","").replaceAll(" +-"," ").replaceAll("- +"," ");
+ String[] array = text.split(" +");
+ for (int i = 0; i list = new ArrayList<>(Arrays.asList(array));
+ list.removeAll(defaultStopWordsList);
+ return list;
+ }
+
+
+ public List> transform() {
+ List> listOfVectors = new ArrayList<>();
+ for (String text : listOfTexts) {
+ listOfVectors.add(countWordsInText(preprocess(text)));
+ }
+ return listOfVectors;
+ }
+
+ public CountVectorizer(Map mapOfTexts) {
+ listOfTexts.addAll(mapOfTexts.keySet());
+ addWordsInSetFromTexts(mapOfTexts.keySet());
+ textClasses.addAll(mapOfTexts.values());
+
+ }
+
+ private List countWordsInText(List words) {
+ List vector = new ArrayList<>();
+ for (String word : setWordsFromAllTexts) {
+ vector.add(Collections.frequency(words,word));
+ }
+ return vector;
+ }
+
+ private void addWordsInSetFromTexts(Set texts) {
+ for (String text : texts) {
+ setWordsFromAllTexts.addAll(preprocess(text));
+ }
+ }
+
+ public List getTextClasses() {
+ return textClasses;
+ }
+
+ public List> appendTextsAndTransform(Map mapOfTexts) {
+ listOfTexts.addAll(mapOfTexts.keySet());
+ addWordsInSetFromTexts(mapOfTexts.keySet());
+ textClasses.addAll(mapOfTexts.values());
+ return transform();
+ }
+
+}
diff --git a/src/ru/caf82/result/machinelearning/preprocessing/LogisticRegression.java b/src/ru/caf82/result/machinelearning/preprocessing/LogisticRegression.java
new file mode 100644
index 0000000..b49117f
--- /dev/null
+++ b/src/ru/caf82/result/machinelearning/preprocessing/LogisticRegression.java
@@ -0,0 +1,184 @@
+package ru.caf82.result.machinelearning.preprocessing;
+
+import ru.caf82.result.exceptions.EmptyArrayException;
+import ru.caf82.result.exceptions.InconveninentShapeException;
+import ru.caf82.result.exceptions.ModelNotFittedException;
+import ru.caf82.result.others.MathService;
+
+import java.io.*;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+public class LogisticRegression implements MlModel, Serializable {
+
+ private final int ITERATES = 1000;
+ private final double rate = 0.001;
+ private double[] weights = null;
+
+ /**
+ * Инициализация массива векторв - нужно добавить первый столбец с одними
+ * единицами
+ *
+ * @param X - координаты векторов
+ * @return
+ */
+ private List> init(List> X) {
+ int i, j;
+ List> xx = new ArrayList>();
+ for (i = 0; i < X.size(); i++) {
+ xx.get(i).add(1);
+ for (j = 0; j < X.get(1).size(); j++) {
+ xx.get(i).add(X.get(i).get(j));
+ }
+ }
+ return xx;
+ }
+
+ /**
+ * Список Integer в массив double
+ *
+ * @param list
+ * @return
+ */
+ private double[] toIntArray(List list) {
+ double[] intArray = new double[list.size()];
+ for (int i = 0; i < list.size(); i++) {
+ intArray[i] = list.get(i);
+ }
+ return intArray;
+ }
+
+ /**
+ * Список boolean в массив double
+ *
+ * @param list
+ * @return
+ */
+ private double[] toBoolArray(List list) {
+ double[] intArray = new double[list.size()];
+ for (int i = 0; i < list.size(); i++) {
+ if (list.get(i) == true) {
+ intArray[i] = 1;
+ } else {
+ intArray[i] = 0;
+ }
+ }
+ return intArray;
+ }
+
+ /**
+ * Тренировка весов С каждой итерацией вероятность будет точнее и точнее
+ *
+ * @param X полученные вектора из CountVectorizer
+ * @param y возможные варианты (1 или 0)
+ * @return
+ * @throws InconveninentShapeException
+ */
+ @Override
+ public MlModel train(List> X, List y) throws InconveninentShapeException {
+
+ double pr = 0;
+ double[] sumdelta; //сумма дельт в каждом столбце
+ int i, j;
+ weights = new double[X.get(1).size() + 1];
+ X = init(X);
+ double delta[];
+ sumdelta = new double[X.size()];
+ for (int u = 0; u < ITERATES; u++) {
+ delta = new double[X.size()];
+ for (i = 0; i < X.size(); i++) {
+ try {
+ pr = MathService.sigmoid(MathService.dotProduct(toIntArray(X.get(i)), weights));
+ } catch (EmptyArrayException ex) {
+ Logger.getLogger(LogisticRegression.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ for (j = 0; j < X.get(i).size(); j++) {
+ delta[i] = pr - toBoolArray(y)[i] * X.get(i).get(j);
+ }
+ for (i = 0; i < X.size(); i++) {
+ sumdelta[i] = sumdelta[i] + delta[i];
+ }
+ }
+ for (i = 0; i < X.size(); i++) {
+ sumdelta[i] = sumdelta[i] / X.size();
+ }
+ for (i = 0; i < X.size(); i++) {
+ weights[i] = weights[i] - rate * sumdelta[i];
+ }
+ }
+ return this;
+ }
+
+ /**
+ * Вспомогательный класс, который помогает вычислить сумму произведений
+ * координат вектора их весов
+ *
+ * @param X вектор
+ * @return
+ */
+ private double help(double[] X) {
+ double result = 0;
+ for (int i = 0; i < X.length; i++) {
+ result = result + X[i] * weights[i];
+ }
+ return result;
+ }
+
+ /**
+ *
+ * @param X
+ * @return
+ * @throws ModelNotFittedException
+ * @throws InconveninentShapeException
+ */
+ @Override
+ public int[] predict(double[] X) throws ModelNotFittedException, InconveninentShapeException {
+ double ver;
+ int[] probability = new int[X.length];
+ ver = Math.exp(help(X)) / (1 + Math.exp(help(X)));
+ if (ver > 0.5) {
+ System.out.println("It is a dog");
+ probability[0] = 1;
+ } else if (ver < 0.4) {
+ System.out.println("It is a cat");
+ probability[0] = 0;
+ } else {
+ System.out.println("I don't know");
+ probability[0] = -1;
+ }
+ return probability;
+ }
+
+ @Override
+ public double[] predictProba(double[] X) throws ModelNotFittedException, InconveninentShapeException {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+ /**
+ * Сериализация
+ * @param model
+ * @throws FileNotFoundException
+ * @throws IOException
+ */
+ public void saveMlModelToFile(MlModel model) throws FileNotFoundException, IOException {
+ FileOutputStream file = new FileOutputStream("C:\\users\\user\\desktop\\work\\Save.dat");
+ ObjectOutputStream os = new ObjectOutputStream(file);
+ LogisticRegression lr = new LogisticRegression();
+ os.writeObject(lr);
+ os.close();
+ }
+
+ public double[] getWeights() {
+ return weights;
+ }
+
+ public void setWeights(double[] weights) {
+ this.weights = weights;
+ }
+
+ @Override
+ public void saveToFile(String filename) throws IOException {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+}
diff --git a/src/ru/caf82/result/machinelearning/preprocessing/MlModel.java b/src/ru/caf82/result/machinelearning/preprocessing/MlModel.java
new file mode 100644
index 0000000..dafa24b
--- /dev/null
+++ b/src/ru/caf82/result/machinelearning/preprocessing/MlModel.java
@@ -0,0 +1,18 @@
+package ru.caf82.result.machinelearning.preprocessing;
+
+import ru.caf82.result.exceptions.InconveninentShapeException;
+import ru.caf82.result.exceptions.ModelNotFittedException;
+
+import java.io.IOException;
+import java.util.List;
+
+public interface MlModel {
+
+ MlModel train(List> X, List y) throws InconveninentShapeException;
+
+ int[] predict(double[] X) throws ModelNotFittedException, InconveninentShapeException;
+
+ double[] predictProba(double[] X) throws ModelNotFittedException, InconveninentShapeException;
+
+ void saveToFile(String filename) throws IOException;
+}
diff --git a/src/ru/caf82/result/machinelearning/preprocessing/PorterStemmer.java b/src/ru/caf82/result/machinelearning/preprocessing/PorterStemmer.java
new file mode 100644
index 0000000..ca3dcc8
--- /dev/null
+++ b/src/ru/caf82/result/machinelearning/preprocessing/PorterStemmer.java
@@ -0,0 +1,102 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package ru.caf82.result.machinelearning.preprocessing;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * Stolen by ilysko on 03.08.17.
+ * original: http://www.algorithmist.ru/2010/12/porter-stemmer-russian.html
+ */
+public class PorterStemmer implements Transformer, WordProcessor {
+
+
+ private static final Pattern PERFECTIVEGROUND = Pattern.compile("((ив|ивши|ившись|ыв|ывши|ывшись)|((?<=[ая])(в|вши|вшись)))$");
+
+ private static final Pattern REFLEXIVE = Pattern.compile("(с[яь])$");
+
+ private static final Pattern ADJECTIVE = Pattern.compile("(ее|ие|ые|ое|ими|ыми|ей|ий|ый|ой|ем|им|ым|ом|его|ого|ему|ому|их|ых|ую|юю|ая|яя|ою|ею)$");
+
+ private static final Pattern PARTICIPLE = Pattern.compile("((ивш|ывш|ующ)|((?<=[ая])(ем|нн|вш|ющ|щ)))$");
+
+ private static final Pattern VERB = Pattern.compile("((ила|ыла|ена|ейте|уйте|ите|или|ыли|ей|уй|ил|ыл|им|ым|ен|ило|ыло|ено|ят|ует|уют|ит|ыт|ены|ить|ыть|ишь|ую|ю)|((?<=[ая])(ла|на|ете|йте|ли|й|л|ем|н|ло|но|ет|ют|ны|ть|ешь|нно)))$");
+
+ private static final Pattern NOUN = Pattern.compile("(а|ев|ов|ие|ье|е|иями|ями|ами|еи|ии|и|ией|ей|ой|ий|й|иям|ям|ием|ем|ам|ом|о|у|ах|иях|ях|ы|ь|ию|ью|ю|ия|ья|я)$");
+
+ private static final Pattern RVRE = Pattern.compile("^(.*?[аеиоуыэюя])(.*)$");
+
+ private static final Pattern DERIVATIONAL = Pattern.compile(".*[^аеиоуыэюя]+[аеиоуыэюя].*ость?$");
+
+ private static final Pattern DER = Pattern.compile("ость?$");
+
+ private static final Pattern SUPERLATIVE = Pattern.compile("(ейше|ейш)$");
+
+ private static final Pattern I = Pattern.compile("и$");
+ private static final Pattern P = Pattern.compile("ь$");
+ private static final Pattern NN = Pattern.compile("нн$");
+
+ public String stem(String word) {
+ word = word.toLowerCase();
+ word = word.replace('ё', 'е');
+ Matcher m = RVRE.matcher(word);
+ if (m.matches()) {
+ String pre = m.group(1);
+ String rv = m.group(2);
+ String temp = PERFECTIVEGROUND.matcher(rv).replaceFirst("");
+ if (temp.equals(rv)) {
+ rv = REFLEXIVE.matcher(rv).replaceFirst("");
+ temp = ADJECTIVE.matcher(rv).replaceFirst("");
+ if (!temp.equals(rv)) {
+ rv = temp;
+ rv = PARTICIPLE.matcher(rv).replaceFirst("");
+ } else {
+ temp = VERB.matcher(rv).replaceFirst("");
+ if (temp.equals(rv)) {
+ rv = NOUN.matcher(rv).replaceFirst("");
+ } else {
+ rv = temp;
+ }
+ }
+
+ } else {
+ rv = temp;
+ }
+
+ rv = I.matcher(rv).replaceFirst("");
+
+ if (DERIVATIONAL.matcher(rv).matches()) {
+ rv = DER.matcher(rv).replaceFirst("");
+ }
+
+ temp = P.matcher(rv).replaceFirst("");
+ if (temp.equals(rv)) {
+ rv = SUPERLATIVE.matcher(rv).replaceFirst("");
+ rv = NN.matcher(rv).replaceFirst("н");
+ } else {
+ rv = temp;
+ }
+ word = pre + rv;
+
+ }
+
+ return word;
+ }
+
+ /**
+ * Some tests
+ */
+ public static void main(String[] args) {
+ PorterStemmer porterStemmer = new PorterStemmer();
+ String[] listOfWords = new String[] {"букварь", "мамин-сибиряка",
+ "птица", "интересный", "космос", "космический"};
+ for (String word: listOfWords) {
+ System.out.println("Результат применения PorterStemmer к слову " + word + " : " +porterStemmer.stem(word));
+ }
+ }
+
+
+ }
diff --git a/src/ru/caf82/result/machinelearning/preprocessing/SequenceProcessor.java b/src/ru/caf82/result/machinelearning/preprocessing/SequenceProcessor.java
new file mode 100644
index 0000000..af1e26d
--- /dev/null
+++ b/src/ru/caf82/result/machinelearning/preprocessing/SequenceProcessor.java
@@ -0,0 +1,24 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package ru.caf82.result.machinelearning.preprocessing;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * @author 1
+ */
+public interface SequenceProcessor {
+ public List